在 Liberty 中配置 OpenID Connect 客户机

可配置 Liberty 服务器以充当 OpenID Connect 客户机或依赖方,以使用 Web 单点登录并将 OpenID Connect 提供程序用作身份提供程序。

关于此任务

通过启用 Liberty 中的 openidConnectClient-1.0 功能部件并输入其他配置信息,可配置 Liberty 服务器以充当 OpenID Connect 客户机。

过程

  1. openidConnectClient-1.0 Liberty 功能部件及任何其他所需功能部件添加至 server.xml 文件。对于 openidConnectClient-1.0 功能部件,还需要 ssl-1.0 功能部件。在 server.xml 文件的 featureManager 元素内添加以下元素声明:
    <feature>openidConnectClient-1.0</feature> 	
    <feature>ssl-1.0</feature>
  2. 配置 openidConnectClient 元素。以下是使用缺省 Liberty 服务器 OpenID Connect 提供程序的最低配置的示例。

    对于该客户机,在给定 URL 模式中必须具有已配置的应用程序,以便能够处理来自 OpenID Connect 提供程序的重定向请求。此 URL 还必须与客户机向 OP 注册的重定向 URL 精确匹配。

    注: 在此示例中,客户机期望 SSL 端口设置为 443。
    <openidConnectClient id="client01" 		
        clientId="client01" 		
        clientSecret="{xor}LDo8LTor" 		
        authorizationEndpointUrl="https://server.example.com:443/oidc/endpoint/OidcConfigSample/authorize" 		
        tokenEndpointUrl="https://server.example.com:443/oidc/endpoint/OidcConfigSample/token"> 	
    </openidConnectClient>
    在此最低配置样本中,采用以下缺省值:
    • scope=openid profile:范围 openid 是必需的,您可使用 scope 属性以编辑必需范围。例如,可将必需 scope 更改为 openid profile email
    • 此 RP 向 OP 将其重定向 URL 注册为 https://<host name>:<ssl port>/oidcclient/redirect/client01,其中 host name 和 ssl port 是自动解析的,client01openidConnectClient 配置元素的标识。如果 RP 前端有代理,那么您可使用属性 redirectToRPHostAndPort 覆盖主机名和端口,并将 redirectToRPHostAndPort 设置为 https://<host name>:<ssl port>
  3. 配置用户注册表。缺省情况下,OP 返回的用户身份不会映射至注册表用户,所以不需要在注册表中配置用户。但是,如果 openidConnectClient 元素的 mapIdentityToRegistryUser 属性设置为 true,那么从 OP 返回的相应身份必须有对应的用户条目,认证和授权才能成功。有关配置用户注册表的更多信息,请参阅在 Liberty 中配置用户注册表
  4. 配置服务器的信任库以包含受支持的 OpenID Connect 提供程序的签署者证书。有关密钥库的信息,请参阅在 Liberty 中启用 SSL 通信
  5. 修改服务器的 SSL 配置以使用所配置信任库。
    <sslDefault sslRef="DefaultSSLSettings" /> 
    <ssl id="DefaultSSLSettings" keyStoreRef="myKeyStore" trustStoreRef="myTrustStore" /> 	
    <keyStore id="myKeyStore" password="{xor}EzY9Oi0rJg==" type="jks" location="${server.config.dir}/resources/security/BasicKeyStore.jks" /> 	
    <keyStore id="myTrustStore" password="{xor}EzY9Oi0rJg==" type="jks" location="${server.config.dir}/resources/security/BasicTrustStore.jks" />

    OpenID Connect 配置为使用服务器指定的缺省 SSL 配置。因此,服务器的缺省 SSL 配置必须使用为 OpenID Connect 配置的信任库。

  6. 可选:配置第三方 OpenID Connect 提供者。

    要配置 Liberty OpenID Connect 客户机以使用第三方 OpenID Connect 提供者(例如,Microsoft Azure 或 Google),必须配置以下属性。可通过调用 OP 的发现端点获取属性值,此端点在通过将字符串 /.well-known/openid-configuration 连接至发出者形成的路径上提供 JSON 文档。

    1. jwkEndpointUrl 属性设置为 OP 的 JSON Web 密钥集 JWK 文档的 URL,此 URL 在发现文件中定义为 jwks_uri。例如,要使用 Google 的 OP,您可设置 jwkEndpointUrl = "https://www.googleapis.com/oauth2/v2/certs"
    2. issuerIdentifier 属性设置为发现文件中定义的 issuer。未包含此值作为 iss 声明的标识令牌会被拒绝。例如,如果您将 Google 用作 OP,那么可设置 issuerIdentifier="accounts.google.com"
    3. 设置 signatureAlgorithm="RS256"。Liberty OpenID Connect 客户机的缺省签名算法为 HS256。
    4. userIdentityToCreateSubject 属性设置为表示用户唯一标识的供应商标识令牌使用的声明名称。例如,如果您使用 Google 的 OP,那么您可设置 userIdentityToCreateSubject ="email",如果您使用 Microsoft Azure,那么您可设置 userIdentityToCreateSubject ="upn"userIdentityToCreateSubject ="unique_name"
    5. groupIdentifier 属性设置为表示用户组成员资格或角色的声明名称。例如,如果您使用 Microsoft Azure,那么可设置 groupIdentifier="groups"

    有关更多 OpenID Connect 客户机配置选项,请参阅 OpenID Connect Client

  7. 可选:认证过滤器。

    如果已启用 openidConnectClient-1.0 功能部件并且未对 openidConnectClient 元素配置 authFilterRef 属性,那么系统通过 OpenID Connect 提供程序认证任何未认证的请求。

    有关配置认证过滤器的更多信息,请参阅认证过滤器

  8. 支持多个 OpenID Connect 提供程序。

    通过创建多个 openidConnectClient 元素和多个认证过滤器,可将 Liberty 配置为多个 OpenID Connect 提供程序的 OpenID Connect 依赖方。每个 openidConnectClient 元素定义与一个 OpenID Connect 提供程序的单点登录关系,并使用 authFilterRef 属性引用一个认证过滤器。

  9. 配置受支持的标识令牌签名算法。

    可配置 Liberty OpenID Connect 客户机以在标识令牌中支持 RS256 签名算法。Liberty OpenID Connect 客户机的缺省签名算法为 HS256。如果通过设置 signatureAlgorithm="RS256" 将 RS256 配置为标识令牌的签名算法,那么必须配置 trustStoreReftrustAliasName,除非 OP 支持 JWK 端点。

  10. 可选:配置“隐式”授权类型。

    openidConnectClient-1.0 功能部件使用“授权代码”授权类型以请求用户认证令牌,您可配置 Liberty openidConnectClient-1.0 功能部件以通过将 grantType="implicit" 添加至 server.xml 文件以使用“隐式”授权类型。如果 Liberty 服务器和 OpenID Connect 提供程序在不同防火墙中,那么必须使用此配置选项。

  11. 可选:在处理标识令牌后,Liberty OpenID Connect 依赖方会自动创建单点登录 (SSO) 令牌。您可以通过添加配置属性 disableLtpaCookie="true" 将 Liberty 配置为不创建用于服务器的 SSO 令牌,或用于通过 OpenID Connect 进行保护的资源的 SSO 令牌。如果设置 disableLtpaCookie="true",那么 Liberty OpenID Connect 客户机将仅接受先前已向所配置的 OpenID Connect 提供者进行认证的认证请求,并且认证会话生存期将限制为标识令牌的生存期。
  12. 可选:可以将 OpenID Connect 客户机配置为选择性地接受有效的 OAuth 2.0 不记名访问令牌作为认证令牌,而不将请求重定向到 OpenID Connect 提供者。如果请求包含有效的 OAuth 2.0 不记名访问令牌,那么 Liberty OpenID Connect 客户机将自动验证该访问令牌,并根据令牌验证结果创建已经过认证的主体集。如果请求不包含访问令牌或者访问令牌无效,那么 Liberty OpenID Connect 客户机会继续将用户重定向到 OpenID Connect 提供者。此功能允许 Liberty 服务器为浏览器客户机和非浏览器客户机(例如 RESTful 客户机)提供服务。可以向配置添加 inboundPropagation="supported" 以启用此功能。
  13. [16.0.0.4 及更高版本]如果托管环境不允许访问 /oidcclient 上下文根,请通过配置 oidcClientWebapp 元素修改上下文根。

    缺省情况下,Liberty OpenID Connect 客户机的重定向 servlet 侦听 /oidcclient 上下文根,且其重定向 URL 格式为 https://<host_name>:<ssl_port>/oidcclient/redirect/<configuration_ID>。 如果无法使用此上下文根,请在服务器配置中设置其他上下文根。

    例如,如果托管环境要求您使用 /acme/openid 上下文根,请添加以下元素:
    <oidcClientWebapp contextPath="/acme/openid" />

    生成的重定向 URL 格式为 https://<host_name>:<ssl_port>/acme/openid/redirect/<configuration_ID>

结果

您现在已建立将 Liberty 服务器配置为 OpenID Connect 客户机(它能够与配置为 OpenID Connect 提供程序的其他 Liberty 服务器通信)时所需的最低配置。

用于指示主题类型的图标 任务主题



时间戳记图标 最近一次更新时间: Monday, 5 December 2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-libcore-mp&topic=twlp_config_oidc_rp
文件名:twlp_config_oidc_rp.html