什么是OIDC? | 了解OIDC是如何运作的 (goteleport.com)
概要
OpenID Connect (OIDC) 是一项身份验证协议,它是对 OAuth 2.0 的扩展,用于标准化用户在登录时的身份验证过程。OIDC 提供身份验证,即验证用户身份的真实性。OAuth 2.0 则决定用户可以访问哪些系统。OAuth 2.0 通常用于使两个不相关的应用程序能够在不泄露用户信息的情况下共享信息。例如,许多人使用他们的电子邮件或社交媒体账户登录第三方网站,而不是创建新的用户名和密码。OIDC 还用于实现单点登录功能。
OIDC的一些主要部分:OIDC主要包括六个主要部分:
- 身份验证 是验证用户身份的过程。
- 客户端软件 是请求用于认证用户或访问资源的令牌的软件,例如网站或应用程序。
- 依赖方 是使用OpenID提供商来认证用户的应用程序。
- 身份信息令牌 包含身份数据,包括认证过程的结果、用户的标识符以及用户如何和何时被认证的信息。
- OpenID提供者 是用户已经拥有账户的应用程序。在OIDC中的作用是认证用户并将这些信息传递给依赖方。
- 用户 是寻求无需创建新账户或提供用户名和密码即可访问应用程序的人或服务。
OIDC 认证通过允许用户登录一个应用并获取另一个应用的访问来实现。例如,如果一个用户想要在一个新闻网站上创建账户,他们可以选择使用 Facebook 来创建账户,而不是创建一个新的账户。如果他们选择 Facebook,他们就是在使用 OIDC 认证。作为身份提供方(如Facebook),处理认证过程,并获取用户的同意,向新闻网站(作为信赖方)提供特定信息,如用户资料等。
开放ID提供商使用ID令牌将认证结果和相关信息传递给依赖方(如应用或网站)。传递的信息包括ID、电子邮件地址和姓名等等。
范围定义了用户能够做什么。OIDC提供了一套标准范围,这些范围规定了令牌是为哪个受信任方生成的、令牌的生成时间和过期时间,以及用于验证用户的加密强度等信息。
一个典型的OIDC认证过程包括以下几步:
- 用户前往他们希望访问的应用程序(也称为依赖方)。
- 用户输入他们的用户名和密码。
- 依赖方向OpenID提供方发送请求。
- OpenID提供方验证用户凭证并授权。
- OpenID提供方将身份令牌,通常还包括访问令牌发送给依赖方。
- 依赖方向用户的设备发送访问令牌,以便用户可以访问应用程序。
- 用户根据访问令牌中的信息获得访问权限。
OIDC 流程定义了令牌是如何请求和交付给依赖方的,下面是一些例子:
- OIDC授权流程: OID提供者向依赖方(RP)发送一个唯一的代码。依赖方随后将该唯一代码回传给OID提供者以换取令牌。此方法用于让OID提供者在发送令牌前验证依赖方。这样浏览器就看不到令牌,有助于保护令牌的安全性。
- OIDC授权流程带PKCE扩展: 此流程与OIDC授权流程相同,但使用了PKCE(Proof Key for Code Exchange)扩展来发送通信,将其哈希化发送。这降低了令牌被截取的风险。
- 客户端凭据: 此流程以访问Web API,通过使用应用程序自身的身份。通常用于服务器之间的通信和不需要用户交互的自动化脚本。
- 设备代码: 此流程允许用户在没有内置浏览器或键盘体验差的联网设备上进行身份验证并访问基于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来实现跨网络和移动应用程序的安全认证。下面是一些例子。
- 当你在 Spotify 上注册账户时,会被提供三种选择:使用 Facebook 注册,使用 Google 注册,或使用电子邮件地址注册。选择 Facebook 或 Google 注册的用户会通过 OIDC 来创建账户。用户会被重定向到他们所选择的 OpenID 提供商(即 Google 或 Facebook),并完成登录后,OpenID 提供商会向 Spotify 发送一些基本的个人信息。用户无需为 Spotify 创建新账户,且密码也会受到保护。
- LinkedIn 也提供了一种使用 Google 账户注册的方法,而不是让用户为 LinkedIn 创建单独的账户。
- 一家公司希望为员工提供单点登录,以便员工可以访问 Microsoft Office 365、Salesforce、Box 和 Workday 来工作。公司不会要求员工为每个应用单独创建账户,而是使用 OIDC 来提供对这四个应用的访问权限。员工只需要创建一个账户,每次登录后就可以访问所有工作需要的应用。
谢谢大家的阅读。👏 快来订阅,更多精彩文章等着你! 🖥️