了解以下内容对ASP.NET 5中的验证中间件应用有很大帮助!

  OAUTH2是目前很多大型网站都使用的对外提供开放资源接口的应用标准,比入taobao\alipay\腾讯\豆瓣等。它和目前的另外一种OPENID标准是不同的两个概念,OPENID是提供用户验证的,而OAUTH是提供授权的,是OPENID的一个升级版本,由两个机构负责维护的。OPENID的最新标准OpenID Connect【(Identity, Authentication) + OAuth 2.0 = OpenID Connect】,ASP.NET 5也提供了这种新标准的支持,他在OAUTH2的基础上作了升级,在OAUTH2验证完后多了一个ID_TOKEN,可以获得更多用户信息,同时是以json格式做交互,更适合RESTful风格的app,进而适合任何不同的客户端程序。

  理解OAUTH其实很简单,最重要是弄清楚几个角色名词和它的授权步骤即可,以我们常用的在第三方网站使用QQ账户登陆为例:

上边的步骤中的粗体就是需要了解的四个名词,大概步骤就是以上这个样子。

  OAUTH2中有好几种验证的流程模型,在ASP.NET4.5>中默认的验证模型是密码流程验证模式,这种模式比较简单,复杂缜密的其实类似上边的步骤说明,属于授权码流程模式,感兴趣的自己看下文档。密码流程验证模式如下图:

ASP.NET 中OAUTH 2.0 及OPENID CONNECT的介绍-LMLPHP密码流程验证模式有个弊端,就是用户必须把用户名密码提供给客户端,客户端不能保存密码。这种模式适用客户端是一个项目的程序或者属于你自己一个公司自己开发的程序,客户端必须高度信任。(当然以上验证和授权服务器可以分开也可以一起)

OPENID CONNECT的流程类似以上步骤(参考这里)

看起来和OAUTH非常相似,它缺点就是太新了,还很少有应用,Google很早已经应用了该标准。Asp.net5已经有人实现了OPENID CONNECT 的服务器端中间件,还有非常不错的例子,可以参考看下https://github.com/aspnet-security/AspNet.Security.OpenIdConnect.Server

05-02 18:21