在 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 信任库。
除了使用示例中显示的 SSL 缺省配置之外,还可以使用 outboundSSLRef 属性在 sslDefault 元素上配置出站缺省 SSL 配置。如果指定了出站缺省属性,那么 outboundSSLRef 属性所指定的 SSL 配置将用于出站连接。您可以通过在 SSL 配置中使用出站 SSL 过滤器来覆盖缺省值并指定要用于出站连接的主机和端口。有关更多信息,请参阅SSL 配置的出站过滤器和配置用于出站通信的 SSL 设置。
注: 要使用 OpenID Connect,scope 属性必须在范围列表中包含 openid。有关更多 OpenID Connect 提供者配置选项,请参阅 OpenID Connect 提供者。
有关更多 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 的灵活性最强,因此可构建您自己的定制令牌。
可选:配置 Liberty OpenID Connect 提供者以授权通过社交登录进行用户认证,因此用户可以使用他们的社交媒体帐户进行登录。
为 Liberty OpenID Connect 提供者配置了社交登录时,用户可以使用他们的社交媒体帐户进行登录,而不需要为 Liberty 提供程序创建帐户。有关更多信息,请参阅在 Liberty 中配置社交登录。
- 可选:
配置 Liberty OpenID Connect 提供者,以便在客户机重定向统一资源定位符 (URL) 中使用正则表达式。
- 要启用正则表达式,请将 allowRegexpRedirects 客户机属性设置为 true。
- 向 regexp: 字符串添加前缀,以将 URL 求值为正则表达式。 将会先检查不含正则表达式的 URL。
- 通过注册端点来注册客户机时,请将正则表达式中的反斜杠 (\) 替换为惊叹号 (!)。
注: 允许重定向到非预期 URL 可能会产生安全隐患。如果使用正则表达式,请确保它们不会与您不希望允许的任何 URL 匹配。在以下示例中,允许重定向到 https://apphost043.example.com URL,因为此 URL 与正则表达式匹配:
<openidConnectProvider id="OidcConfigSample" oauthProviderRef="OAuthConfigSample" /> <oauthProvider id="OAuthConfigSample"> <localStore> <client name="client01" secret="{xor}LDo8LTor" displayname="client01" scope="openid profile email" allowRegexpRedirects="true"> <redirect>"https://apphost.example.com:443/oidcclient/redirect/client01"</redirect> <redirect>"regexp:https://apphost\d\d\d\.example\.com:443/oidcclient/redirect/client01"</redirect> </client> </localStore> </oauthProvider>
结果
子主题
- 将 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™ 平台企业修订版 (J2EE) FormLogin 进行用户认证。

文件名:twlp_config_oidc_op.html