What is OpenID?

What is OpenID?

OpenID 是一种用于标识用户身份的协议,它允许用户在多个网站上使用同一个用户名和密码。它是由一组标准定义的,包括一个身份提供者(IdP)和一个身份验证服务(AS)。IdP 是网站或服务,它提供用户的身份信息,并将其发送给 AS。AS 是另一个网站或服务,它验证 IdP 发送的身份信息,并确认用户的身份。

OpenID 工作流程

  1. 用户选择 OpenID 提供商: 比如 Google/Tencent 或其他支持 OpenID 的服务来管理他们的身份。
  2. 用户访问应用网站,点击登录按钮。
  3. 重定向到 OpenID 提供商,验证用户身份。
  4. 用户认证成功后,OpenID 提供商将用户信息发送给应用网站。
  5. 应用网站验证用户信息,确认用户身份。
  6. 应用网站允许用户访问受保护的资源。

OpenID 特点

  • 去中心化:OpenID 不依赖于任何中心化的身份提供者,用户可以选择自己喜欢的提供商。
  • 账户控制:用户可以选择自己喜欢的 OpenID 提供商,而不需要在多个网站上使用同一个用户名和密码。
  • 账户管理:通过一个 OpenID 来访问多个网站,简化了账户管理。
  • 安全性:OpenID 提供商使用 HTTPS 和其他安全技术来确保用户信息的安全。

OpenID 和 OAuth 的区别

  • OpenID 专注于用户身份验证。
  • OAuth 专注于授权,用于允许应用程序在用户的许可下访问用户的资源,而不需要暴露用户的密码。

尽管 OpenID 很流行,但随着技术的演进,OAuth2.0 和 OpenID Connect 已经成为主流的身份验证协议。

OpenID Connect

OpenID Connect 是 OAuth2.0 的一部分,它在 OAuth2.0 的基础上增加了身份认证的能力。它定义了如何向 OAuth2.0 服务器请求用户的身份信息,并验证用户的身份。

OpenID Connect 包括以下标准:

  • OAuth2.0 授权框架:定义了如何向 OAuth2.0 服务器请求用户的授权。
  • OpenID Connect 发现:定义了如何发现 OpenID 提供商的配置信息。
  • OpenID Connect 注册:定义了如何注册 OpenID 提供商。
  • OpenID Connect 身份验证:定义了如何向 OpenID 提供商请求用户的身份信息。
  • OpenID Connect 回话管理:定义了如何管理用户的会话。
  • OpenID Connect 跨域身份验证:定义了如何跨域验证用户的身份信息。

使用场景

  • 单点登录(Single Sign-On):用户只需要登录一次,就可以访问多个网站。
  • 跨域身份验证(Cross-domain authentication):用户可以在不同网站上使用同一个用户名和密码。
  • 第三方登录(Third-party login):用户可以使用第三方账号登录网站。