您可以配置一部 Liberty 伺服器,以充當 OAuth 2.0 受保護資源伺服器。
關於這項作業
您可以配置一部 Liberty 伺服器,來擔任 OAuth 2.0 受保護資源伺服器,作法是在 Liberty 中啟用 openidConnectClient-1.0 特性,除了其他的配置資訊之外,還要設定 inboundPropagation="required"。
OAuth 2.0 資源伺服器的配置類似於
在 Liberty 中配置「OpenID Connect 用戶端」。
只要是 OAuth 載送 access_token 的佔有者,就可以利用該記號,取得 Liberty 中相關聯資源的存取權。Liberty 伺服器會呼叫 OAuth 2.0 記號內部檢查端點或 OpenID Connect Userinfo 端點,直接從遠端向 OAuth 授權伺服器或 OpenID Connect 提供者驗證 access_token。
程序
- 在 server.xml 檔中新增 openidConnectClient-1.0 Liberty 特性和其他任何必要特性。openidConnectClient-1.0 特性也需要 ssl-1.0 特性。在 server.xml 檔中,將下列元素宣告新增到 featureManager 元素內:
<feature>openidConnectClient-1.0</feature>
<feature>ssl-1.0</feature>
- 配置 openidConnectClient 元素,並新增 inboundPropagation=”required”,啟用該元素作為 OAuth 2.0 受保護資源伺服器。下列範例是使用 Liberty 伺服器 OpenID Connect 提供者和 OAuth 2.0 授權伺服器的最小配置。
<openidConnectClient id="RS" inboundPropagation="required"
clientId="client01"
clientSecret="{xor}LDo8LTor"
validationEndpointUrl="https://server.example.com:443/oidc/endpoint/OP/introspect">
</openidConnectClient>
註: 在這項範例配置中,Liberty 設定
validationMethod="introspect",以執行「OAuth 2.0 記號內部檢查」。會根據直接從內部檢查端點傳回的 JSON 物件(而不需要使用者登錄),來建立受鑑別的主體。
註: 如果要讓 Liberty 執行記號內部檢查,Liberty OAuth 2.0 資源伺服器必須向 OAuth 授權伺服器或 OpenID Connect 提供者,將本身登錄成 OAuth 用戶端,並且可以執行記號內部檢查要求。授權伺服器會提供 clientId
和 clientSecret。
- 配置伺服器的信任儲存庫,使其包含授權伺服器的簽章者憑證,並修改伺服器的 SSL 配置,以使用所配置的信任儲存庫。如需金鑰儲存庫的相關資訊,請參閱「在 Liberty 中啟用 SSL 通訊」。
如需金鑰儲存庫的相關資訊,請參閱在 Liberty 中啟用 SSL 通訊。
- 選用:配置使用者登錄。
依預設,授權伺服器傳回的使用者身分不會對映至登錄使用者,因此使用者登錄中不需要任何使用者。不過,如果 openidConnectClient 元素的 mapIdentityToRegistryUser 屬性設為 true,則授權伺服器所傳回的適當身分必須有一個使用者項目,這樣鑑別和授權才會成功。如需配置使用者登錄的相關資訊,請參閱在 Liberty 中配置使用者登錄。
- 選用:配置鑑別過濾器。
如果啟用 openidConnectClient-1.0 特性,且未以 authFilterRef 屬性來配置
openidConnectClient 元素,凡嘗試發出未經鑑別的要求時,都會利用這個 openidConnectClient 元素來鑑別。
如需配置鑑別過濾器的相關資訊,請參閱鑑別過濾器。
- 選用:您可以建立多個 openidConnectClient 元素和多個鑑別過濾器,將 Liberty 配置成 OAuth 2.0 資源伺服器,以便與多部授權伺服器和 OpenID Connect 提供者一起運作。每一個
openidConnectClient 元素各定義一項與一部授權伺服器或 OpenID Connect 提供者的信任關係,並使用 authFilterRef 屬性來參照至一個鑑別過濾器。
- 選用:您可以設定 validationMethod="userinfo",將 Liberty 資源伺服器配置成驗證記號,並從 OpenID Connect userinfo endpoint 接收使用者資訊。
- 選用項目:Liberty 資源伺服器利用在 JSON 中,從授權伺服器接收來的要求,建立鑑別主體,您可以定義如何將 JSON 對映至主體的規則,請參閱 OpenID Connect 用戶端中的 userIdentifier、groupIdentifier、UserUniqueIdentifier、realmIdentifier 和 realmName。
- 選用項目:受 Liberty OAuth 2.0 保護的資源伺服器預期每一個要求都會提供有效的存取記號,且絕不會利用單一登入 Cookie 來進行鑑別。
不過,仍可能設定 authnSessionDisabled="false",配置 Liberty 來建立單一登入 Cookie。
- 選用項目:您也可以實作 com.ibm.wsspi.security.oauth.UserCredentialResolver SPI,以程式化的方式,將 JSON 對映至主體。
結果
現在,您已建立所需的最基本配置,可以將 Liberty 伺服器配置成 OAuth 2.0 受保護資源伺服器,能夠與 OAuth 授權伺服器或 OpenID Connect 提供者通訊。