[最近工作需要,了解了一些OAuth2,并进行了实际操作,网上资料比较乱,这里总结一下,本地一共记录了6篇,这里做适当删减,便于理解,更新会有点慢!]
[完整代码我会上传到我的github,点击直达,有需要的可以自行参考!]
OAuth2
OAuth2.0 是目前最流行的授权机制,用来授权第三方应用,获取用户数据,是一种协议规范。数据的所有者告诉系统,同意授权第三方应用进入系统,获取这些数据。系统从而产生一个短期的进入令牌(token),用来代替密码,供第三方应用使用。
OAuth2是一个关于授权的开放标准,核心思路是通过各类认证手段(具体什么手段OAuth2不关心)认证用户身份,并颁发token(令牌),使得第三方应用可以使用该令牌在限定时间、限定范围访问指定资源。主要涉及的RFC规范有RFC6749(整体授权框架),RFC6750(令牌使用),RFC6819(威胁模型)这几个,一般我们需要了解的就是RFC6749。
[文字都有,参考了其他人的]
重要概念- resource owner: 拥有被访问资源的用户
- user-agent: 一般来说就是浏览器
- client: 第三方应用
- Authorization server: 认证服务器,用来进行用户认证并颁发token
- Resource server:资源服务器,拥有被访问资源的服务器,需要通过token来确定是否有权限访问
- 授权码(authorization-code)
- 隐藏式(implicit)
- 密码式(password):
- 客户端凭证(client credentials)
-
携带 client_id,redirect_uri 去请求 OAuth 的 oauth/authorize 服务,登录后获取授权码
-
后台使用获得的授权码,配合 client_id,client_secret 去请求 OAuth 的获取 oauth/token 服务,获取到 access_token 凭证
-
使用获取到的 access_token 去请求资源服务器获取相关数据。
待续。。。