在 Liberty 中配置 OpenID Connect 提供程序
可配置 Liberty 服务器以充当 OpenID Connect 提供程序或授权服务器以使用 Web 单点登录。
关于此任务
通过启用 Liberty 中的 openidConnectServer-1.0 功能部件并输入其他配置信息,可配置 Liberty 服务器以充当 OpenID Connect 提供程序。
过程
- 将 openidConnectServer-1.0 Liberty
功能部件及任何其他所需功能部件添加至 server.xml 文件。对于 openidConnectServer-1.0 功能部件,还需要 ssl-1.0 功能部件。
<feature>openidConnectServer-1.0</feature> <feature>ssl-1.0</feature>
- 定义 OAuth 服务提供程序。OpenID Connect 基于 OAuth 2.0 协议,您必须配置有效 OAuth 服务提供程序。OAuth
服务提供程序的配置包含相应 oauth-roles、oauthProvider 和用户注册表元素。被授权使用 OpenID Connect 的任何用户还必须映射至 authenticated oauth-role。有关更多信息,请参阅定义 OAuth 服务提供程序。
系统将针对 OpenID Connect 更新 OAuth 元数据,并且大部分添加在客户机元数据中进行。如果对客户机注册使用 databaseStore 方式,请参阅配置 OpenID Connect 提供者以接受客户机注册请求。建议您遵循该文档中的指示来管理客户机。如果对客户机注册使用 localStore 方式,那么可注册 scope、preAuthorizedScope、grantTypes、responseTypes、introspectTokens、和 functionalUserId 及其他属性。
- 添加 openidConnectProvider 元素,其 oauthProviderRef 属性引用所配置 oauthProvider。每个 oauthProvider 只能被一个 openidConnectProvider 引用,两个或更多 openidConnectProvider 元素不能引用同一 oauthProvider。客户机元素的
name 属性和 secret 属性必须与对应 OpenID Connect 客户机的 client ID 和 client secret 相匹配。此示例使用缺省 Liberty 服务器 OpenID Connect 客户机。 注: 在此示例中,OP 期望客户机的 SSL 端口设置为 443。
<openidConnectProvider id="OidcConfigSample" oauthProviderRef="OAuthConfigSample" /> <oauthProvider id="OAuthConfigSample"> <localStore> <client name="client01" secret="{xor}LDo8LTor" displayname="client01" scope="openid profile email" redirect="https://server.example.com:443/oidcclient/redirect/client01"/> </localStore> </oauthProvider>
注: 有效客户机必须针对 authorization_code 授权类型注册其名称、重定向、范围和密钥。 - 配置服务器的信任库以包含受支持的 OpenID Connect 依赖方或客户机的签署者证书。有关密钥库的信息,请参阅在 Liberty 中启用 SSL 通信
- 修改服务器的 SSL 配置以使用所配置信任库。
<sslDefault sslRef="DefaultSSLSettings" /> <ssl id="DefaultSSLSettings" keyStoreRef="myKeyStore" trustStoreRef="myTrustStore" /> <keyStore id="myKeyStore" password="{xor}Lz4sLCgwLTs=" type="jks" location="${server.config.dir}/resources/security/BasicKeyStore.jks" /> <keyStore id="myTrustStore" password="{xor}Lz4sLCgwLTs=" type="jks" location="${server.config.dir}/resources/security/BasicTrustStore.jks" />
OpenID Connect 配置为使用服务器指定的缺省 SSL 配置。因此,服务器的缺省 SSL 配置必须使用为 OpenID Connect 配置的信任库。
OpenID Connect 中的用户同意表单是可插拔的,这允许提供程序创建和维护他们自己的同意表单。因为此表单是通过 SSL 检索到的,所以您必须配置信任库以包含同意表单所在服务器的签署者证书。如果已使用缺省同意表单并且用于 OpenID Connect 的信任库配置为不同于 Liberty 服务器使用的密钥库,那么必须将 Liberty 服务器的签署者证书导入至 OpenID Connect 信任库。
注: 要使用 OpenID Connect,scope 属性必须在范围列表中包含 openid。有关更多 OpenID Connect 提供者配置选项,请参阅OpenID Connect Provider。
有关更多 OAuth 配置选项,请参阅 OAuth。
可选:配置 Liberty OpenID Connect 提供程序,以便将 JSON Web 令牌 (JWT) 令牌作为 access_token 令牌发出。
缺省情况下,Liberty 会发出不透明的 access_token 令牌。不透明令牌要求令牌接收方对发出该令牌的服务器执行回调。您可配置 Liberty OpenID Connect 提供者,改为将 JWT 令牌作为 access_token 令牌发出,后者通过对 oauthProvider 配置元素设置 jwtAccessToken="true" 或实现 com.ibm.wsspi.security.oauth20.JwtAccessTokenMediator 服务编程接口 (SPI),在令牌内包括令牌验证机制。
有关此接口的更多信息,请参阅 WebSphere OAuth 2.0 Web 单点登录 SPI,或参阅产品在 ${wlp.install.dir}/dev/spi/ibm/ 目录中随附的 Java 文档。
可选:定制 Liberty OpenID Connect 提供者发送的 id_token 令牌的内容。
缺省情况下,Liberty OpenID Connect 提供者发出包含用户名和组成员资格信息的 id_token 令牌。可以通过以下方式定制令牌内容:- 最终通过实现 com.ibm.wsspi.security.openidconnect.IDTokenMediator SPI 完全定制 id_token 内容。SPI 的灵活性最强,因此可构建您自己的定制令牌。
有关此接口的更多信息,请参阅 WebSphere OAuth 2.0 Web 单点登录 SPI,或参阅产品在 ${wlp.install.dir}/dev/spi/ibm/ 目录中随附的 Java 文档。
- 通过列出服务器配置中 openidConnectProvider 元素的 customClaims 属性上更多声明,从 Federated User Registry 访存更多用户属性。如果在 Federated User Registry 中,声明名称与属性名称不同,请将声明名称映射到 claimToUserRegistryMap 元素上的属性。例如,以下配置用于添加许多声明,并将 alias 声明映射到 seeAlso 注册表属性,将 lastName 声明映射到 sn 属性:
<openidConnectProvider id="MyOP" oauthProviderRef="MyOauth" customClaims= "alias, email, lastName, employeeType, office"> <claimToUserRegistryMap alias="seeAlso" lastName="sn"/> ... </openidConnectProvider>
有关更多信息,请参阅配置 UserInfo 端点返回的声明。
- 最终通过实现 com.ibm.wsspi.security.openidconnect.IDTokenMediator SPI 完全定制 id_token 内容。SPI 的灵活性最强,因此可构建您自己的定制令牌。
结果
子主题
- 将 OpenID Connect 提供者用作 OAuth 2.0 授权服务器
OpenID Connect 提供者可用作常规 OAuth 2.0 授权服务器以发出 OAuth 2.0 access_token 并支持所有 OAuth 2.0 授权类型。 - 配置 OpenID Connect 提供者以接受发现请求
发现配置端点提供有关 OpenID Connect 提供者 (OP) 服务器支持的功能的信息。 - 配置 UserInfo 端点返回的声明
可配置 Liberty OpenID Connect 提供者以定制 UserInfo 端点返回的声明。 - 配置 OpenID Connect 提供者以启用两脚 OAuth 请求
典型 OAuth 流程由客户机与授权服务器之间的交互的三只“脚”或三个阶段构成。在两脚 OAuth 方案中,客户机使用预授权范围以便不需要与用户交互(不需要在典型流程中执行其中一只脚)。具体地说,用户不必向授权服务器认证或同意共享所请求范围指定的信息。反而全部所请求范围参数被视为预授权的,并自动添加至请求令牌,然后请求令牌被发送至授权服务器。 - 配置 OpenID Connect 提供程序以使用 RSA-SHA256 算法签署标识令牌
可配置 OpenID Connect 提供程序以使用 RS256 算法签署标识令牌。 - 配置 OpenID Connect 提供程序以接受 JSON Web 令牌 (JWT) 进行授权
可配置充当 OpenID Connect 提供程序的 Liberty 服务器以在交换中接受 JSON Web 令牌来获取访问令牌。 - 配置 OpenID Connect 提供者以接受客户机注册请求
客户机注册端点是管理员管理的服务,用于注册、更新、删除和检索有关计划使用 OpenID Connect 提供者的 OpenID Connect 依赖方的信息。反过来,注册过程可提供信息以供依赖方使用它,包括 OAuth 2.0 客户机标识和客户端密钥(如果未指定)。 - OpenID Connect 定制表单
可以替换用于用户认证的缺省表单登录页面,或者开发您自己的用户同意表单来收集客户机授权数据。 - 认证用户
OpenID Connect 提供者支持使用传统 Java™ Platform Enterprise Edition (J2EE) FormLogin 进行用户认证。


http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-libcore-mp&topic=twlp_config_oidc_op
文件名:twlp_config_oidc_op.html