已定义 OpenID Connect (OIDC)
OpenID Connect (OIDC) 是标识身份验证协议,它是开放授权 (OAuth) 2.0 的扩展,用于标准化用户登录访问数字服务时进行身份验证和授权的过程。OIDC 提供身份验证,这意味着验证用户的身份。OAuth 2.0 授权允许这些用户访问哪些系统。OAuth 2.0 通常用于使两个不相关的应用程序能够共享信息,而不会影响用户数据。例如,许多人使用其电子邮件或社交媒体帐户登录到第三方网站,而不是创建新的用户名和密码。OIDC 还用于提供单一登录。组织可以使用安全标识和访问管理 (IAM) 系统(如 Microsoft Entra ID,以前称为 Azure Active Directory)作为标识的主要身份验证器,然后使用 OIDC 将该身份验证传递给其他应用。这样,用户只需使用一个用户名和密码登录一次即可访问多个应用。
OIDC 的重要组成部分
OIDC 中有六个主要组件:
- 身份验证是验证用户身份的过程。
- 客户端是请求用于对用户进行身份验证或用于访问资源的令牌的软件(如网站或应用程序)。
- 信赖方是使用 OpenID 提供程序对用户进行身份验证的应用程序。
- 标识令牌包含标识数据,包括身份验证过程的结果、用户的标识符以及有关用户身份验证的方式和时间的信息。
- OpenID 提供程序是用户已拥有帐户的应用程序。他们在 OIDC 中的角色是对用户进行身份验证,并将该信息传递给信赖方。
- 用户是人员或服务,他们寻求在不创建新帐户或提供用户名和密码的情况下访问应用程序。
OIDC 身份验证的工作原理是什么?
OIDC 身份验证的工作原理是允许用户登录到一个应用程序并接收对另一个应用程序的访问权限。例如,如果用户想要在新闻网站上创建帐户,则可以选择使用 Facebook 创建帐户,而不是创建新帐户。如果他们选择 Facebook,则使用 OIDC 身份验证。Facebook(称为 OpenID 提供程序)会处理身份验证过程,并获得用户的同意,以向新闻网站(信赖方)提供特定信息(如用户配置文件)。
ID 令牌
OpenID 提供程序使用 ID 令牌将身份验证结果和任何相关信息传输到信赖方。发送的数据类型的示例包括 ID、电子邮件地址和名称。
范围
作用域定义用户可以使用其访问权限执行的操作。OIDC 提供标准范围,用于定义为其生成令牌的信赖方、生成令牌的时间、令牌过期的时间以及用于对用户进行身份验证的加密强度等内容。
典型的 OIDC 身份验证过程包括以下步骤:
- 用户转到他们想要访问的应用程序(信赖方)。
- 用户在其用户名和密码中输入。
- 信赖方向 OpenID 提供程序发送请求。
- OpenID 提供程序会验证用户的凭据并获取授权。
- OpenID 提供程序向信赖方发送标识令牌,并且通常是访问令牌。
- 信赖方将访问令牌发送到用户的设备。
- 根据访问令牌和信赖方中提供的信息向用户授予访问权限。
什么是 OIDC 流?
OIDC 流定义如何请求令牌并将其传递给信赖方。以下是几个示例:
OIDC 授权流:OpenID 提供程序向信赖方发送唯一代码。然后,信赖方将唯一代码发送回 OpenID 提供程序,以交换令牌。使用此方法,OpenID 提供程序可以在发送令牌之前验证信赖方。浏览器无法在此方法中看到令牌,这有助于确保令牌安全。
具有 PKCE 扩展的 OIDC 授权流:此流与 OIDC 授权流相同,只不过它使用代码交换公钥 (PKCE) 扩展以哈希方式发送通信。这样可以减少令牌被拦截的可能性。
客户端凭据:此流通过使用应用程序本身的标识提供对 Web API 的访问权限。它通常用于服务器到服务器的通信和无需用户交互的自动化脚本。
设备代码:通过此流,用户可以在没有浏览器或键盘体验不佳(例如智能电视)的 Internet 连接设备上登录和访问基于 Web 的 API。
不建议使用其他流,例如针对基于浏览器的应用程序设计的 OIDC 隐式流,因为它们存在安全风险。
OIDC 与OAuth 2.0
OIDC 是在 OAuth 2.0 的基础上构建的,用于添加身份验证。首先制定的是 OAuth 2.0 协议,然后才添加 OIDC 以增强其功能。两者的区别在于 OAuth 2.0 提供授权,而 OIDC 提供身份验证。OAuth 2.0 允许用户使用其帐户和 OpenID 提供程序访问信赖方,而 OIDC 允许 OpenID 提供程序将用户配置文件传递给信赖方。OIDC 还允许组织为其用户提供单一登录。
OIDC 身份验证的优势
通过减少用户访问应用所需的帐户数目,OIDC 为个人和组织提供了一些好处:
降低密码被盗的风险
当用户需要使用多个密码访问工作和个人生活所需的应用时,他们通常会选择易于记忆的密码(如 Password1234!),并在多个帐户中使用相同的密码。这会增加破坏者猜出密码的风险。一旦他们知道一个帐户的密码,他们可能就可以访问其他帐户。通过减少用户必须记住的密码数,可以提高他们使用更强、更安全密码的几率。
简化用户体验
一天中登录多个帐户对用户来说可能很耗时,也会让人感到厌烦。此外,如果他们丢失或忘记了密码,重置密码可能会进一步影响工作效率。使用 OIDC 为员工提供单一登录的企业可帮助确保员工将更多时间花费在高效工作,而不是尝试获取应用访问权限上。如果客户允许个人使用其 Microsoft、Facebook 或 Google 帐户登录,则用户更有可能注册和使用他们的服务。
标准化身份验证
包括 Microsoft 和 Google 在内的知名品牌的 OpenID Foundation 都构建了 OIDC。它设计为可互操作,支持许多平台和库,包括 iOS、Android、Microsoft Windows 以及主要的云和标识提供者。
简化标识管理
使用 OIDC 为其员工和合作伙伴提供单一登录的组织可以减少他们需要管理的标识管理解决方案的数量。这样可以更轻松地跟踪更改权限,并允许管理员使用一个接口跨多个应用应用访问策略和规则。使用 OIDC 允许用户使用 OpenID 提供程序登录其应用的公司可减少需要管理的标识数。
OIDC 示例和用例
许多组织使用 OIDC 跨 Web 和移动应用启用安全身份验证。以下是几个示例:
当用户注册 Spotify 帐户时,会有三种选择:使用 Facebook 注册、使用 Google 注册、使用电子邮件地址注册。选择使用 Facebook 或 Google 注册的用户将使用 OIDC 创建帐户。他们将被重定向到他们选择的任何 OpenID 提供程序(Google 或 Facebook),在他们完成登录后,OpenID 提供程序将向 Spotify 发送基本配置文件详细信息。用户无需为 Spotify 创建新帐户,并且其密码仍受保护。
LinkedIn 还为用户提供了使用其 Google 帐户创建帐户的方法,而不是为 LinkedIn 创建单独的帐户。
公司希望为因工作需要访问 Microsoft Office 365、Salesforce、Box 和 Workday 的员工提供单一登录。公司使用 OIDC 提供对所有这四个应用的访问权限,而不是要求员工为每个应用创建单独的帐户。员工创建一个帐户,每次登录后,他们都可以访问工作所需的所有应用。
实现用于安全身份验证的 OIDC
OIDC 提供了一种身份验证协议,用于简化用户的登录体验并增强安全性。对于希望鼓励客户注册其服务而无需管理帐户的企业来说,这是一个很好的解决方案。它还使组织能够为其员工和其他用户提供安全的单一登录来访问多个应用。组织可以使用支持 OIDC 的标识和访问解决方案(如 Microsoft Entra)在单个位置管理其所有标识和身份验证安全策略。
详细了解 Microsoft 安全
常见问题解答
-
OIDC 是标识身份验证协议,它与 OAuth 2.0 一起,用于标准化用户登录访问数字服务时进行身份验证和授权的过程。OIDC 提供身份验证,也就是验证用户所声称的身份。OAuth 2.0 授权允许这些用户访问哪些系统。OIDC 和 OAuth 2.0 通常用于使两个不相关的应用程序能够共享信息,而不会影响用户数据。
-
OIDC 和安全断言标记语言(SAML) 都是标识身份验证协议,允许用户安全登录一次并访问多个应用程序。SAML 是一种较旧的协议,广泛用于单一登录。它使用 XML 格式传输数据。OIDC 是使用 JSON 格式传输用户数据的较新协议。OIDC 越来越受欢迎,因为它比 SAML 更易实现,并且更适合移动应用程序。
-
OIDC 代表 OpenID Connect 协议,该协议是一种标识身份验证协议,用于使两个不相关的应用程序能够共享用户配置文件信息,而不影响用户凭据安全。
-
OIDC 是在 OAuth 2.0 的基础上构建的,用于添加身份验证。首先制定的是 OAuth 2.0 协议,然后才添加 OIDC 以增强其功能。两者的区别在于 OAuth 2.0 提供授权,而 OIDC 提供身份验证。OAuth 2.0 允许用户使用其帐户和 OpenID 提供程序访问信赖方,而 OIDC 允许 OpenID 提供程序将用户配置文件传递给信赖方。此功能还允许组织为其用户提供单一登录。OAuth 2.0 和 OIDC 流类似,但它们使用的术语略有不同。
典型的 OAuth 2.0 流具有以下步骤:
- 用户转到他们想要访问的应用程序(资源服务器)。
- 资源服务器将用户重定向到他们拥有帐户(客户端)的应用程序。
- 用户使用其客户端凭据登录。
- 客户端验证用户的访问权限。
- 客户端将访问令牌发送到资源服务器。
- 资源服务器授予用户访问权限。
典型的 OIDC 流具有以下步骤:
- 用户转到他们想要访问的应用程序(信赖方)。
- 用户在其用户名和密码中输入。
- 信赖方向 OpenID 提供程序发送请求。
- OpenID 提供程序会验证用户的凭据并获取授权。
- OpenID 提供程序向信赖方发送标识令牌,并且通常是访问令牌。
- 信赖方将访问令牌发送到用户的设备。
- 根据访问令牌和信赖方中提供的信息向用户授予访问权限。
-
OpenID 提供程序使用 ID 令牌将身份验证结果和任何相关信息传输到信赖方应用程序。发送的数据类型的示例包括 ID、电子邮件地址和名称。
关注 Microsoft 安全