Oauth2.0(五):Authorization Code 授权方式
Authorization Code 方式适用于有自己的服务器的应用。之所以叫这个名字,是因为流程中引入了一个叫做 authorization code 的东西。这个东西是一个一次性的临时凭证,用来换取 access token 和 refresh token。
鉴权服务器提供了一个类似这样的接口:
https://www.xxx.com/exchange?code=&client_id=&client_secret=
需要传入 code、client_id 以及 client_secret(实际中通常不会放在url中传递)。验证通过后,返回 access token 和 refresh token。一旦换取成功,code 立即作废,不能再使用第二次。
为什么要引入一个一次性的 code?
先看流程图:
这个 code 的作用是保护 token 的安全性。上一节说到,Implicit 方式下,token 是不安全的。这是因为在 4 这一步当中直接把 token 返回给应用。而这一步容易被拦截、窃听。引入了 code 之后,即使攻击者能够窃取到 code,但是由于他无法获得应用保存在服务器的 client_secret,因此也无法通过 code 换取 token。而 5 这一步,为什么不容易被拦截、窃听呢?这是因为,首先,这是一个从服务器到服务器的访问,黑客比较难捕捉到;其次,这个请求通常要求是 https 的实现。即使能窃听到数据包也无法解析出内容。
有了这个 code,token 的安全性大大提高。因此,Oauth2.0 鼓励使用这种方式进行授权,而 Implicit 方式则是在不得已情况下才会使用。
若有疑问,可以直接进以下公众号提问。也可以直接发送 oauth2.0 获取设计指南和伪代码:
- oauth2.0+app方式 webgis 授权
- Oauth2.0(四):Implicit 授权方式
- OAuth2.0学习(1-4)授权方式1-授权码模式(authorization code)
- 一口气说出 OAuth2.0 的四种授权方式
- OAuth2.0学习(1-5)授权方式2-简化模式(implicit grant type)
- OAuth2.0学习(1-6)授权方式3-密码模式(Resource Owner Password Credentials Grant)
- OAuth2.0授权方式
- OAuth2.0学习(1-7)授权方式4-客户端模式(Client Credentials Grant)
- OAuth2.0学习(1-8) 授权方式五之Access_Token令牌过期更新
- 基于OAuth2.0的登录验证授权方式获取sessionkey
- Oauth2.0授权方式
- OAuth2.0学习(1-9)新浪开放平台微博认证-web应用授权(授权码方式)
- 通过OAuth2.0方式弹出授权页面获得用户基本信息
- WCF寄宿IIS的asp.net 服务 基于Windows用户组的授权方式
- java微信开发-OAuth2.0授权
- OAuth2授权服务器和四种授权方式
- 转:微信公众平台开发(71)OAuth2.0网页授权
- ZeroTurnaround JRebel(二):授权方式和安装激活
- SpringOauth2.0 用户名密码验证方式(二)
- 基于oAuth2.0实现开放平台授权中心