EN
返回档案库

案例库 · 软件与 IT · 技术决策 · 2007–2014

OpenID Connect 通过将身份层叠加到 OAuth 2.0 上,让“使用 Google 登录”成为标准

OIDC 在 OAuth 2.0 之上增加了一个身份层:一次登录流程返回一个带签名的 JSON ID 令牌,因此网站无需存储密码即可验证用户身份。

OpenID 基金会

解法

在应用之间共享密码是“用我的账户登录”的常见变通办法,但这导致凭证到处泄露。OAuth 2.0 解决了委托授权问题,但没有解决认证问题:应用可以获得访问权限,但仍无法验证用户是谁。

OpenID Connect 恰恰在 OAuth 2.0 之上增加了缺失的身份层。它启动一个带有授权服务器的登录流程,然后返回一个 ID 令牌——这是一个带签名的 JSON Web 令牌,包含关于用户的标准声明——以可互操作、类似于 REST 的方式。

由于复用了 OAuth 2.0 的基础设施和 JSON,开发者无需学习新的传输协议或解析新格式即可采用。它还免去了设置、存储和管理密码的责任,降低了基于凭证的泄露风险。

生效的原因

  • 基于 OAuth 2.0 可以复用现有流程和基础设施。
  • JSON ID 令牌易于在任何语言中验证。
  • 标准声明(姓名、邮箱)开箱即用,满足多数需求。
  • 用户只向身份提供商提供密码,而非每个应用。
取得的成效复用 OAuth 的令牌;增加一个签名 ID 令牌来验证身份。聪明

可借鉴之处

不要发明新协议,如果已有可信协议:在现有实现上增加缺失层,并让输出格式成为每个开发者都已能解析的格式(JSON)。

后续进展

OIDC 是“使用 Google、Facebook、Apple 和 Microsoft 登录”背后的标准,广泛部署于网络、移动和 JavaScript 客户端;OpenID 基金会为实施提供认证,以保证互操作性。

资料来源

发现哪里写错了?告诉我们。

相关案例