在 Liberty 中配置「OpenID Connect 提供者」

您可以將 Liberty 伺服器配置成擔任「OpenID Connect 提供者」或授權伺服器,以充分利用 Web 單一登入。

關於這項作業

您可以在 Liberty 中啟用 openidConnectServer-1.0 特性,外加提供其他的配置資訊,將 Liberty 伺服器配置成擔任「OpenID Connect 提供者」。

程序

  1. server.xml 檔中新增 openidConnectServer-1.0 Liberty 特性和其他任何必要特性。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 meta 資料,並在用戶端 meta 資料中新增主要項目。如果您的用戶端登錄使用 databaseStore 模式,請參閱將「OpenID Connect 提供者」配置成接受用戶端登錄要求。建議您遵循文件來管理用戶端。如果您的用戶端登錄使用 localStore 模式,您可以登錄 scopepreAuthorizedScopegrantTypesresponseTypesintrospectTokensfunctionalUserId,以及其他屬性。

  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 信任儲存庫。

    註: 如果要使用 OpenID Connect,scope 屬性必須將 openid 包含在範圍清單中。

    如需其他的「OpenID Connect 提供者」配置選項,請參閱OpenID Connect Provider

    如需其他的 OAuth 配置選項,請參閱OAuth

  6. [16.0.0.3 以及更新版本]選用項目:配置「Liberty OpenID Connect 提供者」來發出「JSON Web 記號 (JWT)」記號作為 access_token 記號。

    依預設,Liberty 會發出不透明的 access_token 記號。 不透明記號要求記號接受者回呼發出記號的伺服器。 您可以在 oauthProvider 配置元素中設定 jwtAccessToken="true",或是實作 com.ibm.wsspi.security.oauth20.JwtAccessTokenMediator 服務程式設計介面 (SPI),將「Liberty OpenID Connect 提供者」配置成改為發出 JWT 記號,來作為 access_token 記號,且記號內含有記號驗證機制。

    如需介面的相關資訊,請參閱 WebSphere OAuth 2.0 Web 單一登入 SPI,或產品隨附於 ${wlp.install.dir}/dev/spi/ibm/ 目錄中的 Java 說明文件。

  7. [16.0.0.4 以及更新版本]選用:針對 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 屬性上列出其他的聲明,以便從「聯合使用者登錄」提取其他的使用者屬性。如果聲明名稱有別於「聯合使用者登錄」中的屬性名稱,請在 claimToUserRegistryMap 元素上,將該聲明名稱對映至該屬性。
      舉例來說,下列配置新增了數項聲明,並將 alias 聲明對映至 seeAlso 登錄屬性,以及將 lastName 聲明對映至 sn 屬性:
      <openidConnectProvider id="MyOP" oauthProviderRef="MyOauth" customClaims= "alias, email, lastName, employeeType, office">
          <claimToUserRegistryMap alias="seeAlso" lastName="sn"/> 
          ...
      </openidConnectProvider>

      如需相關資訊,請參閱配置 UserInfo 端點所傳回的聲明

結果

您已完成所需的最基本配置,如此就能將 Liberty 伺服器配置成「OpenID Connect 提供者」,並且能夠與配置成「OpenID Connect 用戶端」的其他 Liberty 伺服器通訊。

指示主題類型的圖示 作業主題



「時間戳記」圖示 前次更新: 2016 年 11 月 30 日
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-libcore-mp&topic=twlp_config_oidc_op
檔名:twlp_config_oidc_op.html