简化模式定义

通过客户端的后台服务器,与“服务提供商”的认证服务器进行认证。(和授权码模式差不多哦)

1、用户访问客户端,后者将前者导向认证服务器。
2、用户选择是否给予客户端授权。
3、假设用户给予授权,认证服务器会直接向客户端发送访问令牌(access token)。
4、Client拿着access token去访问Resource资源

注意:红色字体部分是与授权码模式最根本的区别哦

简化模式的工作流程图:

图 1 (网上搜到的简化模式工作流程图说明)

新建项目:ImplicitGrant

AuthorizationServer与ResourceServer还是用之前的项目

新建Index.cshtml

    <form id="form1">
<div>
Access Token<br />
<input id="AccessToken" name="AccessToken" />
<input id="Authorize" type="button" name="signin.AccessToken" value="向认证服务器申请授权" />
<br />
<input id="CallApi" name="submit.CallApi" value="访问受控资源" type="button" />
</div>
<div id="output">
</div>
</form> 
     var authorizeUri = 'http://localhost:8270/OAuth/Authorize';
var returnUri = 'http://localhost:3622/Home/SignIn';
var apiUri = 'http://localhost:8001/api/Values'; $('#Authorize').click(function () {
var nonce = 'my-nonce'; var uri = addQueryString(authorizeUri, {
'client_id': '7890ab',
'redirect_uri': returnUri,
'state': nonce,
'scope': 'scope1 scope2',
'response_type': 'token',
}); window.oauth = {};
window.oauth.signin = function (data) {
if (data.state !== nonce) {
return;
} $('#AccessToken').val(data.access_token);
} window.open(uri, 'Authorize', 'width=640,height=480');
}); $('#CallApi').click(function () {
$.ajax(apiUri, {
beforeSend: function (xhr) {
xhr.setRequestHeader('Authorization', 'Bearer ' + $('#AccessToken').val());
},
dataType: 'text',
cache: false,
success: function (data) {
console.log(data);
$('#output').text(data);
}
});
});

OK,自此,简化模式测试项目有效代码已经完成了

注意:逻辑是故意写在html页面而没有写在后台cs页面的哦,这是简化模式形成的原因

运行项目试试

开始授权

点击认证按钮,出现认证页面和授权码页面一样

点击授权,直接返回的就是token

点击访问受控资源,发现没有预期那样返回资源数据

这是js跨域的问题,需要在ResourceServer项目加上“microsoft.aspnet.webapi.cors”引用

并在WebApiConfig.cs页面加上

// 跨域配置
config.EnableCors(new EnableCorsAttribute("*", "*", "*"));

在ValuesController中的Get方式上贴上[HttpGet]  

   public class ValuesController : ApiController
{
[HttpGet]
[Authorize]
public string Get()
{
return "lanxiaoke";
}
}

再次试试,成功返回数据

 asp.net权限认证系列 

  1. asp.net权限认证:Forms认证
  2. asp.net权限认证:HTTP基本认证(http basic)
  3. asp.net权限认证:Windows认证
  4. asp.net权限认证:摘要认证(digest authentication)
  5. asp.net权限认证:OWIN实现OAuth 2.0 之客户端模式(Client Credential)
  6. asp.net权限认证:OWIN实现OAuth 2.0 之密码模式(Resource Owner Password Credential)
  7. asp.net权限认证:OWIN实现OAuth 2.0 之授权码模式(Authorization Code)
  8. asp.net权限认证:OWIN实现OAuth 2.0 之简化模式(Implicit)

asp.net权限认证:OWIN实现OAuth 2.0 之简化模式(Implicit)的更多相关文章

  1. asp.net权限认证:OWIN实现OAuth 2.0 之客户端模式(Client Credential)

    asp.net权限认证系列 asp.net权限认证:Forms认证 asp.net权限认证:HTTP基本认证(http basic) asp.net权限认证:Windows认证 asp.net权限认证 ...

  2. asp.net权限认证:OWIN实现OAuth 2.0 之密码模式(Resource Owner Password Credential)

    asp.net权限认证系列 asp.net权限认证:Forms认证 asp.net权限认证:HTTP基本认证(http basic) asp.net权限认证:Windows认证 asp.net权限认证 ...

  3. asp.net权限认证:OWIN实现OAuth 2.0 之授权码模式(Authorization Code)

    asp.net权限认证系列 asp.net权限认证:Forms认证 asp.net权限认证:HTTP基本认证(http basic) asp.net权限认证:Windows认证 asp.net权限认证 ...

  4. asp.net权限认证:Windows认证

    asp.net权限认证系列 asp.net权限认证:Forms认证 asp.net权限认证:HTTP基本认证(http basic) asp.net权限认证:Windows认证 asp.net权限认证 ...

  5. asp.net权限认证:Forms认证

    asp.net权限认证系列 asp.net权限认证:Forms认证 asp.net权限认证:HTTP基本认证(http basic) asp.net权限认证:Windows认证 asp.net权限认证 ...

  6. asp.net权限认证:HTTP基本认证(http basic)

    asp.net权限认证系列 asp.net权限认证:Forms认证 asp.net权限认证:HTTP基本认证(http basic) asp.net权限认证:Windows认证 asp.net权限认证 ...

  7. asp.net权限认证:摘要认证(digest authentication)

    asp.net权限认证系列 asp.net权限认证:Forms认证 asp.net权限认证:HTTP基本认证(http basic) asp.net权限认证:Windows认证 asp.net权限认证 ...

  8. [转]asp.net权限认证:摘要认证(digest authentication)

    本文转自:http://www.cnblogs.com/lanxiaoke/p/6357501.html 摘要认证简单介绍 摘要认证是对基本认证的改进,即是用摘要代替账户密码,从而防止明文传输中账户密 ...

  9. [转]asp.net权限认证:HTTP基本认证(http basic)

    本文转自:http://www.cnblogs.com/lanxiaoke/p/6353955.html HTTP基本认证示意图 HTTP基本认证,即http basic认证. 客户端向服务端发送一个 ...

随机推荐

  1. 函数(swift)

    输入输出参数(In-Out Parameters) 如果你想要一个函数可以修改参数的值,并且想要在这些修改在函数调用结束后仍然存在,那么就应该把这个参数定义为输入输出参数(In-Out Paramet ...

  2. nginx实战

    原文:http://www.cnblogs.com/yucongblog/p/6289628.html nginx实战   (一) nginx环境的搭建安装流程: 1 通过ftp将nginx-1.11 ...

  3. JAVA中传递参数乱码问题

    url传递中文如果jsp页面,myeclipse.web.xml中org.springframework.web.filter.CharacterEncodingFilter,都是UTF-8编码,直接 ...

  4. Android线程之异步消息处理机制(二)——Message、Handler、MessageQueue和Looper

    异步消息处理机制解析 Android中的异步消息处理主要有四个部分组成,Message.Handler.MessageQueue和Looper. 1.Message Message是在线程之间传递的消 ...

  5. CSS 弹性盒子布局

    学习地址:https://developer.mozilla.org/zh-CN/docs/Web/CSS/CSS_Flexible_Box_Layout

  6. 了解HTML/HTML5中的download属性

    一.download属性是个什么鬼? 首先看下面这种截图: 如果我们想实现点击上面的下载按钮下载一张图片,你会如何实现? 我们可能会想到一个最简单的方法,就是直接按钮a标签链接一张图片,类似下面这样: ...

  7. Java 之 反射

    1.反射 a.意义:允许运行中的Java程序对自身进行检查,或者说"自审",并能直接操作程序的内部属性 b.概括:运行时探究和使用编译时未知的类 c.反射的核心原理: ①JVM在加 ...

  8. ps--记录几个方法步骤

    1.图片文字去掉 1.1 矩形工具-->吸管-->alt+delete 1.2 钢笔工具-->Ctrl+回车(变换选区)-->吸管-->alt+delete 2.图层锁不 ...

  9. 公众号第三方平台开发-aes解密失败

    公众号第三方平台开发-aes解密失败 问题:本地启动项目,配置域名,测试微信公众号,系统正常运行:将项目部署到测试环境执行同样的操作,系统报错,错误异常:aes解密失败..... 调试--寻找问题-- ...

  10. 让VLC也拥有斷點播放功能

    如何让VLC也拥有记忆功能,记住上次播放位置.以下都是在Windows系统下操作,其他 方法/步骤 下载 libsrpos_plugin-0.5.win 插件 https://sourceforge. ...