在上篇文章中我研究了OpenId及DotNetOpenAuth的相关应用,这一篇继续研究OAuth2
什么是OAuth2OAuth是一种开放认证协议,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用
数字2表示现在使用第2代协议
OAuth2中的角色OAuth2有四种角色resourceowner资源所有者:比如twitter用户,他在twitter的数据就是资源,他自己就是这些资源的所有者
resourceserver资源服务器:保存资源的服务器,别人要访问受限制的资源就要出示AccessToken(访问令牌)
client客户端:一个经过授权后,可以代表资源所有者访问资源服务器上受限制资源的一方
比如开发者开发的应用
authorizationserver授权服务器:对资源所有者进行认证,认证通过后,向客户端发放AccessToken(访问令牌)
认证过程用户访问客户端的网站,想操作自己存放在资源服务提供方的资源
客户端将用户引导至授权服务提供方的授权页面请求用户授权,在这个过程中将客户端的回调连接发送给授权服务提供方
用户在授权服务提供方的网页上输入用户名和密码,然后授权该客户端访问所请求的资源
授权成功后,授权服务提供方对客户端授予一个授权码,网站跳回至客户端
客户端获得授权码后,再次从授权服务提供方请求获取访问令牌
授权服务提供方根据授权码授予客户端访问令牌
客户端使用获取的访问令牌访问存放在资源服务提供方上的受保护的资源
获取访问令牌方式从上面可以看到,令牌是串起整个认证流程的核心
OAuth2有四种获取令牌的方式AuthorizationCode授权码方式:这种是推荐使用的,也是最安全的
ImplicitGrant隐式授权:相比授权码授权,隐式授权少了第一步的取Auth