
![[8.5.5.4 或更新版本]](../ng_v8554.gif)
在 Liberty 設定檔中配置「OpenID Connect 用戶端」
您可以將 Liberty 設定檔伺服器配置成擔任「OpenID Connect 用戶端」或「依賴方」,以充分利用 Web 單一登入,以及使用「OpenID Connect 提供者」作為身分提供者。
關於這項作業
您可以啟用 Liberty 設定檔的 openidConnectClient-1.0 特性,外加提供其他的配置資訊,來將 Liberty 設定檔伺服器配置成擔任「OpenID Connect 用戶端」。
程序
- 在 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 元素。下列範例是最基本的配置,如此才能與預設 Liberty 設定檔伺服器的「OpenID Connect 提供者」搭配運作。
用戶端在給定的 URL 型樣必須有配置適當的應用程式,且其可以處理來自「OpenID Connect 提供者」的重新導向要求。這個 URL 也必須完全符合用戶端向 OP 登錄的重新導向 URL。
註: 在本例中,用戶端預期 OP 的 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,其中,會自動解析主機名稱和 ssl 埠,且 client01 是 openidConnectClient 配置元素的 ID。若有 Proxy 位於 RP 前面,您可以使用 redirectToRPHostAndPort 屬性置換主機名稱和埠,並將 redirectToRPHostAndPort 設為 https://<host name>:<ssl port>。
- 配置使用者登錄。依預設,OP 傳回的使用者身分不會對映至登錄使用者,因此不需在登錄中配置任何使用者。不過,如果 openidConnectClient 元素的 mapIdentityToRegistryUser 屬性設為 true,則 OP 所傳回的適當身分必須有一個使用者項目,這樣鑑別和授權才會成功。如需配置使用者登錄的相關資訊,請參閱配置 Liberty 設定檔的使用者登錄。
- 配置伺服器的信任儲存庫,以包含支援的「OpenID Connect 提供者」簽章者憑證。如需金鑰儲存庫的相關資訊,請參閱啟用 Liberty 設定檔的 SSL 通訊。
- 修改伺服器的 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 的信任儲存庫。
選用:配置協力廠商 OpenID Connect 提供者。
如果要將 Liberty OpenID Connect 用戶端配置成使用協力廠商「OpenID Connect 提供者」(例如 Microsoft Azure 或 Google),您必須配置下列屬性。如果要取得屬性值,可呼叫 OP 的探索端點,這會在 /.well-known/openid-configuration 字串配上發證者而形成的路徑中提供 JSON 文件。
- 將 jwkEndpointUrl 屬性設為 OP JSON Web 金鑰集 JWK 文件的 URL,這在探索檔案中是定義成 jwks_uri。舉例來說,如果要使用 Google 的 OP,您可以設定 jwkEndpointUrl = "https://www.googleapis.com/oauth2/v2/certs"。
- 將 issuerIdentifier 屬性設為探索檔案中所定義的 issuer。如果 ID 記號沒有包含此值來作為 iss 聲明,則會被拒絕。舉例來說,如果您使用 Google 作為您的 OP,您可以設定 issuerIdentifier="accounts.google.com"。
- 設定 signatureAlgorithm="RS256"。Liberty OpenID Connect 用戶端的預設簽章演算法是 HS256。
- 將 userIdentityToCreateSubject 屬性設為供應商 ID 記號所使用的聲明名稱,以代表使用者的唯一 ID。舉例來說,如果您使用 Google 的 OP,可設定 userIdentityToCreateSubject ="email",如果您使用 Microsoft Azure,可設定 userIdentityToCreateSubject ="upn" 或 userIdentityToCreateSubject ="unique_name"。
- 將 groupIdentifier 屬性設為代表使用者的群組成員資格或角色的聲明名稱。舉例來說,如果您使用 Microsoft Azure,可設定 groupIdentifier="groups"。
如需其他的「OpenID Connect 用戶端」配置選項,請參閱server.xml 檔中的配置元素。
選用:鑑別過濾器。
當啟用 openidConnectClient-1.0 特性時,如果沒有使用 authFilterRef 屬性來配置 openidConnectClient 元素,任何未經鑑別的要求,都會經由 OpenID Connect 提供者來鑑別。
如需配置鑑別過濾器的相關資訊,請參閱
鑑別過濾器。
- 支援多個 OpenID Connect 提供者。
您可以建立多個 openidConnectClient 元素和多個「鑑別過濾器」,以便將 Liberty 設定檔配置成多個「OpenID Connect 提供者」的「OpenID Connect 依賴方」。每一個 openidConnectClient 元素各與一個「OpenID Connect 提供者」之間定義一項「單一登入」關係,並使用 authFilterRef 屬性,來參照一個「鑑別過濾器」。
結果
次主題
呼叫 OpenID Connect 的授權端點
在 OpenID Connect 中,授權端點會處理使用者的鑑別和授權。呼叫 OpenID Connect 的記號端點
在 OpenID Connect 的「授權碼流程」中,記號端點供用戶端用來取得 ID 記號、存取記號和重新整理記號。呼叫 OpenID Connect 的內部檢查端點
內部檢查端點可讓存取記號的持有者向簽發存取記號的「OpenID Connect 提供者」,要求存取記號的一組相關 meta 資料。存取記號必須是透過 OpenID Connect 或 OAuth 鑑別所取得的存取記號。呼叫涵蓋面對映服務
涵蓋面對映服務是一個未受保護的端點,會採 JavaScript 物件表示法 (JSON) 陣列形式,傳回以斜線結尾的 URI 字首。URI 字首陣列指定哪些 Web 環境定義是單一登入 (SSO) 群組的一部分,藉以讓用戶端瞭解在傳送存取記號時,該 URI 目的地是否可視為安全。呼叫 OpenID Connect 的 UserInfo 端點
UserInfo 端點會針對接受 OpenID Connect 鑑別程序鑑別的使用者,傳回其相關聲明。呼叫 OpenID Connect 的階段作業管理端點
階段作業管理端點可讓「OpenID Connect 依賴方」監視使用者在特定「OpenID Connect 提供者 (OP)」的登入狀態,同時將網路資料流量降至最低。藉助於階段作業管理端點,「依賴方 (RP)」可以使已登出「OpenID Connect 提供者」的使用者登出。