OpenID Connect
OpenID Connect 是一个简单身份协议,也是在 OAuth 2.0 协议(允许客户机应用程序依赖 OpenID Connect 提供者执行的认证来验证用户身份)基础上构建的开放式标准。
OpenID Connect 使用 OAuth 2.0 进行认证和授权,随后构建唯一标识用户的身份。客户机应用程序还可以可互操作方式及类 REST 的方式从 OpenID Connect 提供者处获取有关用户的基本概要文件信息。
Liberty 支持 OpenID Connect 1.0 并在 Web 单点登录中充当客户机、依赖方和提供者的角色。支持以下 OpenID Connect 规范:
OpenID Connect Core 1.0:配置为 OpenID Connect 依赖方的 Liberty 服务器支持使用授权代码流程进行认证。配置为 OpenID Connect 提供者的 Liberty 服务器支持使用授权代码流程和隐式流程进行认证。
对于将 Liberty 服务器用作基于 Web 的依赖方的对象,OpenID Connect Basic Client Implementer's Guide 1.0 是易于读取且为使用授权代码流程的基于 Web 的依赖方提供详细信息的 OpenID Connect Core 规范的一部分。
- 访问令牌
- 用于访问受保护资源的凭证。访问令牌是一个字符串,用于表示对客户机发出的授权。
- 授权端点
- OpenID 提供者上的资源,接受来自客户机要求执行用户认证和授权的请求。在授权代码流程中,授权端点对客户机返回授权或代码。在隐式流程中,授权端点对客户机返回标识令牌和访问令牌。
- 授权
- 一个凭证,表示用于访问资源的用户授权,被客户机用于获取访问令牌。
- 声明
- 有关实体的已断言信息。声明示例包含电话号码、名字、姓氏及其他。
- 标识令牌
- 一个 JSON Web 令牌 (JWT),包含有关已认证用户的声明。
- 内省端点
- OpenID 提供者上的资源,允许持有访问令牌的客户机检索用于创建访问令牌的信息,例如,用户名、授予范围、客户机标识或其他信息。
- OpenID Connect 提供者 (OP)
- OAuth 2.0 授权服务器,能够对客户机或依赖方 (RP) 提供声明。
- 刷新令牌
- 由 OP 对客户机发出,用于获取新的访问令牌(在当前访问令牌到期时)或更多访问令牌。
- 依赖方 (RP)
- 配置为 OpenID Connect 客户机的 Liberty 服务器或需要来自 OpenID 提供者 (OP) 的声明的客户机应用程序。
- 范围
- 允许访问第三方资源的特权或许可权。
- 令牌端点
- OP 上的资源,在交换中接受来自客户机的授权或代码以获取访问令牌、标识令牌和刷新令牌。
作为 OpenID Connect 客户机的 Liberty 服务器
您可以配置 Liberty 以用作 OpenID Connect 客户机。此设置允许 Liberty 服务器依赖另一充当用户认证和授权的 OP 的 Liberty 服务器。
配置为充当 OpenID Connect 客户机的 Liberty 服务器支持 OpenID Connect 1.0 标准的授权代码流程。
在授权代码流程中,所有令牌交换是通过使用 OpenID Connect 提供者的令牌端点处理的。首先,客户机向 OP 的授权端点提交授权请求。向 OP 成功认证和授权时,客户机从 OP 接收授权或代码。此授权代码可通过请求发送至 OP 的令牌端点。客户机在来自令牌端点的响应时接收标识令牌、访问令牌和刷新令牌。然后,客户机验证标识令牌并检索用户的主体集标识。此概要文件流程适用于能够在他们自身与 OP 之间安全维护客户端密钥的客户端。此流程还允许客户机获取刷新令牌。
有关配置为 OpenID Connect 客户机的 Liberty 服务器,请参阅在 Liberty 中配置 OpenID Connect 客户机
作为 OpenID Connect 提供者的 Liberty 服务器
您可以配置 Liberty 以用作 OpenID Connect 提供者。此设置允许 Liberty 服务器充当可供 OpenID Connect 客户机使用的授权服务器。
配置为充当 OpenID Connect 提供者的 Liberty 服务器支持 OpenID Connect 1.0 标准的授权代码流程和隐式流程。每个流程确定如何将标识令牌、访问令牌和刷新令牌返回至客户机。
授权代码流程通过使用 OpenID Connect 提供者的令牌端点处理所有令牌交换。OpenID Connect 提供者在 OP 的授权端点接受来自客户机的授权请求。如果需要认证,那么 OpenID Connect 提供者会执行相应认证。OpenID Connect 提供者还会从用户处获取任何必需的同意或授权,例如,通过在浏览器中提示用户提供授予对某些范围的访问权的许可权。如果成功,或者不需要任何认证,那么 OpenID 提供者会将授权或代码发送回客户机。然后 OpenID Connect 提供者接受客户机提交至其令牌端点的请求,此请求包含授权代码。包含授权代码的请求由 OpenID 提供者进行验证。成功验证时,OpenID Connect 提供者对客户机返回包含标识令牌和访问令牌的响应。
与授权代码流程不同,在隐式流程中,所有令牌都是从授权端点返回的;不会使用 OP 的令牌端点。首先,客户机准备认证请求并将其发送至 OP 的授权端点。然后,OpenID Connect 提供者执行任何必需的认证,同时从用户处获取任何必需的同意或授权。例如,OpenID Connect 提供者在浏览器中提示用户提供授予对某些范围的访问权的许可权。成功认证和授权时,OpenID Connect 提供者对客户机发送回标识令牌和访问令牌。然后,客户机验证标识令牌并检索用户的主体集标识。此概要文件流程适用于无法在他们自身与 OP(例如,本机应用程序)之间安全维护客户端密钥的客户机。
有关将 Liberty 服务器配置为 OpenID Connect 提供者的信息,请参阅在 Liberty 中配置 OpenID Connect 提供者
授权代码流程
下面描述了典型的 OpenID Connect 授权代码流程:
- 用户在 RP 上访问应用程序。
- RP 准备认证请求并将用户重定向至 OP。
- OP 认证用户,例如,通过提示用户输入凭证。用户授权 RP 访问应用程序所需的信息。OP 为 RP 生成一次性的授权代码。
- OP 将用户重定向回具有授权代码的 RP。
- RP 调用 OP 的令牌端点以交换授权代码来获取访问令牌、标识令牌和刷新令牌。
- RP 使用标识令牌来对用户授权。

隐式流程
只有充当 OpenID Connect 提供者的 Liberty 服务器才支持隐式流程。下面描述了典型的 OpenID Connect 隐式流程:
- 用户在 RP 上访问应用程序。
- RP 准备认证请求并将用户重定向至 OP。
- OP 认证用户,例如,通过提示用户输入凭证。用户授权 RP 访问应用程序所需的信息。
- OP 将用户重定向回具有标识令牌和访问令牌的 RP。
- RP 使用标识令牌来对用户授权。
