Liberty 中配置 OpenID Connect 提供者

可配置 Liberty 服务器以充当 OpenID Connect 提供者或授权服务器以使用 Web 单点登录。

关于此任务

通过在 Liberty 中启用 openidConnectServer-1.0 功能部件并输入其他配置信息,可配置 Liberty 服务器以充当 OpenID Connect 提供者。

过程

  1. openidConnectServer-1.0 Liberty 功能部件及任何其他所需功能部件添加至 server.xml 文件。对于 openidConnectServer-1.0 功能部件,还需要 ssl-1.0 功能部件。
    <feature>openidConnectServer-1.0</feature>
    <feature>ssl-1.0</feature>
  2. 定义 OAuth 服务提供者。OpenID Connect 基于 OAuth 2.0 协议,您必须配置有效 OAuth 服务提供者。OAuth 服务提供者的配置包含相应 oauth-rolesoauthProvider 和用户注册表元素。被授权使用 OpenID Connect 的任何用户还必须映射至 authenticated oauth-role。有关更多信息,请参阅定义 OAuth 服务提供者

    系统将针对 OpenID Connect 更新 OAuth 元数据,并且大部分添加在客户机元数据中进行。如果对客户机注册使用 databaseStore 方式,请参阅配置 OpenID Connect 提供者以接受客户机注册请求。建议您遵循该文档中的指示来管理客户机。如果对客户机注册使用 localStore 方式,那么可注册 scopepreAuthorizedScopegrantTypesresponseTypesintrospectTokens、和 functionalUserId 及其他属性。

  3. 添加 openidConnectProvider 元素,其 oauthProviderRef 属性引用所配置 oauthProvider。每个 oauthProvider 只能被一个 openidConnectProvider 引用,两个或更多 openidConnectProvider 元素不能引用同一 oauthProvider。客户机元素的 name 属性和 secret 属性必须与对应 OpenID Connect 客户机的 client IDclient 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 授权类型注册其名称、重定向、范围和密钥。
  4. 配置服务器的信任库以包含受支持的 OpenID Connect 依赖方或客户机的签署者证书。有关密钥库的信息,请参阅在 Liberty 中启用 SSL 通信
  5. 修改服务器的 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 信任库。

    [17.0.0.3 and later]除了使用示例中显示的 SSL 缺省配置之外,还可以使用 outboundSSLRef 属性在 sslDefault 元素上配置出站缺省 SSL 配置。如果指定了出站缺省属性,那么 outboundSSLRef 属性所指定的 SSL 配置将用于出站连接。您可以通过在 SSL 配置中使用出站 SSL 过滤器来覆盖缺省值并指定要用于出站连接的主机和端口。有关更多信息,请参阅SSL 配置的出站过滤器配置用于出站通信的 SSL 设置

    注: 要使用 OpenID Connect,scope 属性必须在范围列表中包含 openid

    有关更多 OpenID Connect 提供者配置选项,请参阅 OpenID Connect 提供者

    有关更多 OAuth 配置选项,请参阅 Oauth

  6. [16.0.0.3 and later]可选:配置 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 文档。

  7. [16.0.0.4 and later]可选:定制 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 端点返回的声明

  8. [17.0.0.2 and later]可选:配置 Liberty OpenID Connect 提供者以授权通过社交登录进行用户认证,因此用户可以使用他们的社交媒体帐户进行登录。

    Liberty OpenID Connect 提供者配置了社交登录时,用户可以使用他们的社交媒体帐户进行登录,而不需要为 Liberty 提供程序创建帐户。有关更多信息,请参阅在 Liberty 中配置社交登录

  9. 可选: [17.0.0.4 and later]配置 Liberty OpenID Connect 提供者,以便在客户机重定向统一资源定位符 (URL) 中使用正则表达式。
    1. 要启用正则表达式,请将 allowRegexpRedirects 客户机属性设置为 true
    2. regexp: 字符串添加前缀,以将 URL 求值为正则表达式。 将会先检查不含正则表达式的 URL。
    3. 通过注册端点来注册客户机时,请将正则表达式中的反斜杠 (\) 替换为惊叹号 (!)。
    注: 允许重定向到非预期 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>

结果

您已完成将 Liberty 服务器配置为 OpenID Connect 提供者(它能够与配置为 OpenID Connect 客户机的其他 Liberty 服务器通信)时所需的最低配置。

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

文件名:twlp_config_oidc_op.html