客户端必须得到用户的授权(authorizationgrant),才能获得令牌(access token)。oAuth2.0定义了四种授权方式:
简化模式(implicit)
这种模式比授权码模式少了code环节,回调url直接携带token
这种模式的使用场景是基于浏览器的应用
这种模式基于安全性考虑,建议把token时效设置短一些
implicit模式(隐式模式)和授权码模式(authorization_code)访问差不多,相比之下,少了一步获取code的步骤,而是直接获取token
授权码模式(authorization code)
- 设计了auth code,通过这个code再获取token
- 使用client_id和client_secret换取授权码(code),再通过授权码换取令牌
密码模式(resource owner password credentials)
- 使用client_id和client_secret以及用户名密码直接获取秘钥
客户端模式(client credentials)
- 这种模式直接根据client的id和密钥即可获取token,无需用户参与
- 这种模式比较合适消费api的后端服务,比如拉取一组用户信息等
