OAuth2(一):理解OAuth2授权方式

[最近工作需要,了解了一些OAuth2,并进行了实际操作,网上资料比较乱,这里总结一下,本地一共记录了6篇,这里做适当删减,便于理解,更新会有点慢!]

[完整代码我会上传到我的github点击直达,有需要的可以自行参考!]

OAuth2

OAuth2.0 是目前最流行的授权机制,用来授权第三方应用,获取用户数据,是一种协议规范。数据的所有者告诉系统,同意授权第三方应用进入系统,获取这些数据。系统从而产生一个短期的进入令牌(token),用来代替密码,供第三方应用使用。

OAuth2是一个关于授权的开放标准,核心思路是通过各类认证手段(具体什么手段OAuth2不关心)认证用户身份,并颁发token(令牌),使得第三方应用可以使用该令牌在限定时间、限定范围访问指定资源。主要涉及的RFC规范有RFC6749(整体授权框架),RFC6750(令牌使用),RFC6819(威胁模型)这几个,一般我们需要了解的就是RFC6749。

[文字都有,参考了其他人的]

OAuth2(一):理解OAuth2授权方式
RFC6749
重要概念
  • resource owner: 拥有被访问资源的用户
  • user-agent: 一般来说就是浏览器
  • client: 第三方应用
  • Authorization server: 认证服务器,用来进行用户认证并颁发token
  • Resource server:资源服务器,拥有被访问资源的服务器,需要通过token来确定是否有权限访问
授权方式
  • 授权码(authorization-code)
  • 隐藏式(implicit)
  • 密码式(password):
  • 客户端凭证(client credentials)
  注意,不管哪一种授权方式,第三方应用申请令牌之前,都必须先到系统备案,说明自己的身份,然后会拿到两个身份识别码:客户端 ID(client ID)和客户端密钥(client secret)。这是为了防止令牌被滥用,没有备案过的第三方应用,是不会拿到令牌的。 更多的请参考: 阮一峰   这里介绍一下我们要搭建的,即授权码方式,也是目前应用最广泛的,一些网站可以支持QQ、微信等三方登录,也是使用的此方式。
OAuth2(一):理解OAuth2授权方式
授权码流程图
总结一下 大致流程
  1. 携带 client_id,redirect_uri 去请求 OAuth 的 oauth/authorize 服务,登录后获取授权码

  2. 后台使用获得的授权码,配合 client_id,client_secret 去请求 OAuth 的获取 oauth/token 服务,获取到 access_token 凭证

  3. 使用获取到的 access_token 去请求资源服务器获取相关数据。

待续。。。

 
上一篇:Spring Security + OAuth2 精讲 多场景打造企业级认证与授权


下一篇:Oauth2协议那些事