OAuth支持的几类 grant_type 及说明

在OAuth2.1中,对各类grant_type进行了修正(相比OAuth2.0),更符合安全发展需求。

    1. authorization_code — 授权码模式(即先登录获取code,再获取token)
    2. authorization_code + PKCE — 授权码模式+PKCE (即先登录获取code, 请求时增加参数code_challengecode_challenge_method; 再获取token,增加参数code_verifier)
    3. password — 密码模式(将用户名,密码传过去,直接获取token) 【OAuth2.1不推荐使用,安全性差
    4. client_credentials — 客户端模式(无用户,用户向客户端注册,然后客户端以自己的名义向’服务端’获取资源)
    5. implicit — 简化模式(在redirect_uri 的Hash传递token; Auth客户端运行在浏览器中,如JS,Flash)【OAuth2.1不再支持
    6. device_code — (全称 urn:ietf:params:oauth:grant-type:device_code)适用于各类无输入键盘的物联网智能设备进行认证授权, 通过类似’扫码登录’形式完成整个授权流程【OAuth2.1新增】
    7. jwt-bearer — (全称 urn:ietf:params:oauth:grant-type:jwt-bearer)是一类增强client端请求安全性的断言(assertion)实现; 通过类似’双向SSL’的机制来让server端验证client端的签名实现强安全性【OAuth2.1新增】
    8. refresh_token — 刷新access_token

对OAuth2.1的状态与特征请查看 https://andaily.com/blog/?p=20004。在 spring-oauth-server 的v3.0.0版本中将提供完整的OAuth2.1支持。

推荐大家升级使用更安全的OAuth2.1实现,同时拥抱OIDC(https://andaily.com/blog/?p=440)。

若需要对各类grant_type测试, 请访问 http://git.oschina.net/mkk/spring-oauth-client 项目