在OAuth2.1中,对各类grant_type进行了修正(相比OAuth2.0),更符合安全发展需求。
-
authorization_code
— 授权码模式(即先登录获取code,再获取token)authorization_code + PKCE
— 授权码模式+PKCE (即先登录获取code, 请求时增加参数code_challenge与code_challenge_method; 再获取token,增加参数code_verifier)password
— 密码模式(将用户名,密码传过去,直接获取token) 【OAuth2.1不推荐使用,安全性差】client_credentials
— 客户端模式(无用户,用户向客户端注册,然后客户端以自己的名义向’服务端’获取资源)implicit
— 简化模式(在redirect_uri 的Hash传递token; Auth客户端运行在浏览器中,如JS,Flash)【OAuth2.1不再支持】device_code
— (全称 urn:ietf:params:oauth:grant-type:device_code)适用于各类无输入键盘的物联网智能设备进行认证授权, 通过类似’扫码登录’形式完成整个授权流程【OAuth2.1新增】jwt-bearer
— (全称 urn:ietf:params:oauth:grant-type:jwt-bearer)是一类增强client端请求安全性的断言(assertion)实现; 通过类似’双向SSL’的机制来让server端验证client端的签名实现强安全性【OAuth2.1新增】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 项目
一条评论