
![[8.5.5.4 或更新版本]](../ng_v8554.gif)
在 Liberty 設定檔中配置「OpenID Connect 提供者」
您可以將 Liberty 設定檔伺服器配置成擔任「OpenID Connect 提供者」或授權伺服器,以充分利用 Web 單一登入。
關於這項作業
您可以啟用 Liberty 設定檔的 openidConnectServer-1.0 特性,外加提供其他的配置資訊,來將 Liberty 設定檔伺服器配置成擔任「OpenID Connect 提供者」。
程序
- 在 server.xml 檔中新增 openidConnectServer-1.0 Liberty 特性和其他任何必要特性。openidConnectServer-1.0 特性也需要 ssl-1.0 特性。
<feature>openidConnectServer-1.0</feature> <feature>ssl-1.0</feature>
- 定義 OAuth 服務提供者。OpenID Connect 建置在 OAuth 2.0 通訊協定之上,因此您必須配置有效的 OAuth 服務提供者。OAuth 服務提供者的配置包括適當的
oauth-roles、oauthProvider 和使用者登錄元素。只要使用者獲授權使用 OpenID Connect,也必須對映至 authenticated oauth-role。如需相關資訊,請參閱定義 OAuth 服務提供者。
會更新 OpenID Connect 的 OAuth meta 資料,並在用戶端 meta 資料中新增主要項目。如果您的用戶端登錄使用 databaseStore 模式,請參閱將「OpenID Connect 提供者」配置成接受用戶端登錄要求,取得相關資訊。建議您遵循文件來管理用戶端。如果您的用戶端登錄使用 localStore 模式,您可以登錄 scope、preAuthorizedScope、grantTypes、responseTypes、introspectTokens 和 functionalUserId,以及其他屬性。
- 新增 openidConnectProvider 元素,並使其 oauthProviderRef 屬性參照所配置的
oauthProvider。每一個 oauthProvider 只能有一個 openidConnectProvider 參照它,不能有二或多個 openidConnectProvider 元素參照相同的 oauthProvider。用戶端元素的 name 屬性和
secret 屬性必須符合對應「OpenID Connect 用戶端」的
client ID 和 client 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 授權類型,有效的用戶端必須登錄其名稱、重新導向、範圍和密碼。 - 配置伺服器的信任儲存庫,以包含支援的「OpenID Connect 依賴方」(或用戶端)簽章者憑證。如需金鑰儲存庫的相關資訊,請參閱啟用 Liberty 設定檔的 SSL 通訊
- 修改伺服器的 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 提供者」配置選項,請參閱server.xml 檔中的配置元素。
註: 如果要使用 OpenID Connect,scope 屬性必須將 openid 包含在範圍清單中。
結果
次主題
使用 OpenID Connect 提供者作為 OAuth 2.0 授權伺服器
OpenID Connect 提供者可作為一般 OAuth 2.0 授權提供者,來簽發 OAuth 2.0 access_token,並支援所有的 OAuth 2.0 授權類型。將「OpenID Connect 提供者」配置成接受探索要求
探索配置端點提供「OpenID Connect 提供者」伺服器所支援功能的相關資訊。配置 UserInfo 端點所傳回的聲明
您可以配置 Liberty 設定檔的「OpenID Connect 提供者」,以自訂 UserInfo 端點所要傳回的聲明。將「OpenID Connect 提供者」配置成啟用二方 (2-legged) OAuth 要求
典型的 OAuth 流程由三「方 (leg)」組成,或由用戶端與授權伺服器之間的互動階段組成。 在二方 (2-legged) OAuth 實務中,用戶端使用預先授權的範圍,因此不需要與使用者互動,因而不需要執行典型流程中的其中一方。具體來說,使用者不需要接受授權伺服器的鑑別,或是同意共用所要求範圍指定的資訊。反倒是所有所要求的 scope 參數都會視為預先授權,且會自動新增到要求記號中,之後再將要求記號傳送給授權伺服器。將「OpenID Connect 提供者」配置成使用 RSA-SHA256 演算法來簽署 ID 記號
您可以將「OpenID Connect 提供者」配置成使用 RS256 演算法來簽署 ID 記號。將「OpenID Connect 提供者」配置成接受「JSON Web 記號 (JWT)」作為授權許可
您可以將擔任「OpenID Connect 提供者」的 Liberty 設定檔伺服器,配置成接受「JSON Web 記號」,以交換存取記號。將「OpenID Connect 提供者」配置成接受用戶端登錄要求
用戶端登錄端點是管理者所管理的服務,用來登錄、更新、刪除和擷取打算使用「OpenID Connect 提供者」之「OpenID Connect 依賴方」的相關資訊。登錄程序可進而提供資訊供「依賴方」使用,包括 OAuth 2.0 用戶端 ID 和用戶端密碼(如果沒有指定的話)。OpenID Connect 自訂表單
您可以取代使用者鑑別的預設表單登入頁面,也可以開發您自己的使用者同意表來收集用戶端授權資料。鑑別使用者
OpenID Connect 提供者支援使用傳統 Java™ Platform Enterprise Edition (J2EE) FormLogin 來鑑別使用者。