案例库 · 软件与 IT · 技术决策 · 2007–2012
OAuth 2.0终结了密码共享,成为网络授权层
RFC 6749给了每个应用一个带作用域和生命周期的令牌,用户不再向陌生人交出密码
IETF · Google · Twitter
那一手
在OAuth 2.0之前,第三方应用想要读取你的照片或联系人,往往要求你把密码交给它——明文存储,获得全部权限,而且如果你想撤销某个应用的访问,就得改密码,但其他应用也会受影响。
2012年10月发布的RFC 6749正式确立了基于令牌的模型:资源所有者向授权服务器认证,授权服务器发放一个带有特定作用域和生命周期的访问令牌给客户端。客户端拿着这个令牌去访问资源服务器,全程不接触密码。
因为这个协议基于HTTP,定义了一小套授权类型,所以所有主流平台——Google、Facebook、GitHub、微软,还有成千上万的其他服务——都能实现它。它成了网络授权的通用语言,从“使用Google登录”到API委托,无处不在。
为什么管用
- 密码不再离开用户的掌控,消除了明文存储凭证的风险
- 作用域和过期时间让用户只授予有限、临时的访问权限,而不是整个账户的钥匙
- 撤销变成按应用操作:吊销一个令牌不会影响其他集成
- 基于HTTP的简洁规范,任何服务都能实现,不局限于巨头
值了多少用有作用域的令牌委托,绝不要共享密码聪明
可以搬走什么
缩小凭证范围来解决信任问题:有作用域、会过期、可撤销的令牌把委托变成普通的API调用,成为所有平台的默认做法。
后来呢
OAuth 2.0成为行业默认的授权框架,持令牌(Bearer token)支撑着大多数公共API和联邦登录;扩展如OpenID Connect在此基础上增加了身份层。它的缺陷——尤其是令牌被盗——后来推动了令牌持有证明和WebAuthn的发展,但委托模型本身没有改变。
资料来源
发现哪里写错了?告诉我们。