在 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,scope 屬性必須將 openid 包含在範圍清單中。如需其他的「OpenID Connect 提供者」配置選項,請參閱OpenID Connect Provider。
如需其他的 OAuth 配置選項,請參閱OAuth。
選用項目:配置「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 說明文件。
選用:針對 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 端點所傳回的聲明。
- 實作 com.ibm.wsspi.security.openidconnect.IDTokenMediator SPI,以全面自訂 id_token
內容。SPI 提供最大的彈性,因此您可以建置自己的自訂記號。
結果
次主題
- 使用 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 來鑑別使用者。


http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twlp_config_oidc_op
檔名:twlp_config_oidc_op.html