经过多年的OAuth 2.0协议的发展,最新版本的 OAuth 2.1 协议已经在进行中,可访问 https://oauth.net/2.1/ 获取最新的相关信息。
2.1版本相比2.0版本的优化或不同点有:
简单点说就是:
- PKCE变成必须的了
- Redrect URI的检查更严格
- grant_type中的password, implicit都不再推荐使用(甚至不再支持)
- 不再允许通过URL查询参数传递access_token(甚至不再支持)
- 刷新token增加约束限制(如一次性刷新)
OAuth2.1将变得更加安全,从流程定义与各个端(endpoint)来讲;这也符合网络环境越来越复杂,安全问题越来越高的实际场景。相比传统的client端浏览器与APP来讲,未来的client端会更多样,如智能家居设备,穿戴设备,工业互联设备等。
从另一个方面来说,认证凭证(如常见的 密码)将趋于在授权服务(Authorization Server)中统一进行管理,认证的操作收归到授权服务器端来管控,不再放由client端可知晓(想想grant_type=password中可通过API传递用户凭证是多么的信任client端啊)。