管理身分識別提供者
為 SAML 或 OIDC 單一登入設定自訂身分識別提供者 (IdP),讓組織使用者能夠使用現有的企業憑證進行驗證。
身分識別提供者管理僅適用於 Enterprise 方案的管理員。
設定自訂身分識別提供者 (IdP),為組織啟用單一登入 (SSO)。設定 IdP 後,Bob 會在你登入 IBM Bob(包括 IDE、Bob Shell 及 Bob Web)時將你重新導向至該 IdP 進行驗證。
你可以在 Bob 中設定 SAML 及 OpenID Connect (OIDC) 身分識別提供者。使用符合組織身分識別平台的通訊協定。
SSO 通訊協定相容性
IBM Bob 與下列 SSO 通訊協定相容:
- SAML(Security Assertion Markup Language)
- OIDC(OpenID Connect)
已驗證的 OIDC 提供者
雖然你可以使用其他符合設定和權杖要求的 OIDC 提供者,但以下平台已經過驗證:
- Auth0
- Keycloak
- Okta
- PingOne
新增身分識別提供者
新增 IdP 是一個兩步驟的流程。首先設定 IdP 並儲存,然後新增使用該 IdP 的電子郵件網域。
步驟 1:設定身分識別提供者
前往 IBM Bob 管理頁面。
選取 Authentication 索引標籤。
按一下 Add IdP。 輸入 IdP 的名稱。 選取 IdP 類型:SAML 或 OIDC。 產生你的 service provider (SP) 憑證。
Bob 需要 SP 私密金鑰和 SP 憑證來簽署 SAML 驗證要求。你必須使用 openssl 命令列工具自行產生這些憑證。
如果你已經擁有 SP 金鑰對和憑證,請跳到下一步。
執行下列命令以產生 SP 私密金鑰:
openssl genrsa -out sp_private_key.pem 2048然後執行此命令從私密金鑰產生 SP 憑證。將 /CN、/O 和 /C 值取代為描述性憑證名稱、組織名稱和兩個字母的國家/地區代碼:
openssl req -new -x509 -key sp_private_key.pem -out sp_certificate.pem -days 365 -subj "/CN=Bob SAML SP/O=IBM/C=US"sp_certificate.pem 檔案也必須上傳至你的 IdP,以便它可以驗證來自 Bob 的要求簽章。
輸入 IdP 的設定詳細資訊。 檢閱下列區段中的通訊協定特定需求。 按一下 Save。
IdP 隨即建立,並顯示在 Authentication 索引標籤的表格中。
SAML 設定
SAML 需要下列設定詳細資訊:
Identity provider 欄位 — 從你的 IdP 取得這些資訊:
idp_entity_id— IdP 的唯一識別碼(例如,https://idp.example.com)idp_sso_url— Bob 傳送驗證要求的 SSO URLidp_certificate— 用於驗證來自 IdP 的 SAML 回應的 PEM 編碼 X.509 憑證
Service provider 欄位 — 使用上一步產生的檔案:
sp_private_key—sp_private_key.pem的內容sp_certificate—sp_certificate.pem的內容
選用欄位:
idp_slo_url— IdP 的 Single Logout URL。Single Logout 尚未在 Bob 中完全實作。
在 Attribute mapping 區段中,將 IdP 的使用者屬性對應至 IBM Bob 的使用者欄位。對應格式為 Bob 屬性名稱 → IdP 屬性名稱或 URI。請查看你的 IdP 設定以取得正確的屬性名稱。
email(必要) — 使用者的電子郵件地址name(選用)— 使用者的完整顯示名稱given_name(選用)— 使用者的名字family_name(選用)— 使用者的姓氏groups(選用)— 使用者的群組
IdP 管理員:註冊新的 OIDC 用戶端
在 Bob 執行個體管理員可以在 Bob 中設定 OIDC IdP 記錄之前,IdP 管理員必須先在身分識別提供者中建立 OIDC 應用程式(用戶端)。此步驟產生的值是 Bob 執行個體管理員在 Bob 中新增 IdP 時提供的內容。
應用程式類型和授權類型
在你的身分識別提供者中建立一個 Web 應用程式(伺服器端 / 機密用戶端),並啟用 Authorization Code 授權類型。Bob 僅使用 Authorization Code 流程 — 請勿選擇 Implicit、Device Code 或 Client Credentials。
重新導向 URI
在 OIDC 應用程式中註冊以下回呼 URL。大多數提供者執行嚴格的字串比對,請原樣複製:
https://api.us-east.bob.ibm.com/authn/v1/auth/callback需要在用戶端啟用的範圍
| 範圍 | 目的 | 必要 |
|---|---|---|
openid | 啟用 OIDC 模式並傳回 id_token | 是 |
email | 透過 id_token 或 userinfo 端點公開使用者的電子郵件地址 | 是 |
offline_access | 隨存取權杖一起授予 refresh_token | 對大多數提供者而言是必要的 |
Bob 要求每個 Authorization Code 交換回應中都包含 refresh_token。如果你的提供者透過其他機制(例如提供者特定的範圍,或在每次代碼交換時無條件地)核發重新整理權杖,請相應設定 — 但請確保用戶端被允許接收重新整理權杖。如果未傳回 refresh_token,登入將被中止。
權杖端點驗證方法
將 OIDC 應用程式的權杖端點驗證方法設定為 client_secret_post。Bob 在每次權杖要求中將 client_id 和 client_secret 作為表單本文參數傳送。client_secret_basic、private_key_jwt 和 none 不被接受。
權杖設定
| 設定 | 必要值 |
|---|---|
| 存取權杖格式 | 任意(JWT 或不透明 — Bob 不直接解析 IdP 存取權杖) |
| ID 權杖 | 必須在每次 Authorization Code 交換和每次權杖重新整理時核發 |
| ID 權杖簽署演算法 | RS256、ES256 或 PS256 |
| 重新整理權杖輪換 | 你可以使用重新整理權杖輪換。Bob 在每次續訂時儲存新的權杖。如果你的提供者輪換重新整理權杖,請確保提供者僅在 Bob 收到替換權杖後才使上一個權杖失效(標準輪換行為,而非無寬限期的一次性使用)。 |
需要移交給 Bob 執行個體管理員的值
建立用戶端應用程式後,將以下值提供給 Bob 執行個體管理員:
| 值 | 查找位置 | Bob 設定欄位 |
|---|---|---|
| 用戶端 ID | 應用程式憑證頁面 | client_id |
| 用戶端密碼 | 應用程式憑證頁面 | client_secret |
| Authorization 端點 URL | 提供者的 OIDC 端點頁面或 .well-known/openid-configuration | authorization_endpoint |
| 權杖端點 URL | 提供者的 OIDC 端點頁面或 .well-known/openid-configuration | token_endpoint |
| JWKS URI | 提供者的 OIDC 端點頁面或 .well-known/openid-configuration | jwks_uri |
| Issuer URL | 提供者的 OIDC 端點頁面或 .well-known/openid-configuration | issuer |
| Userinfo 端點 URL(選用) | 提供者的 OIDC 端點頁面或 .well-known/openid-configuration | userinfo_endpoint |
大多數提供者在 https://<你的提供者網域>/.well-known/openid-configuration 發佈所有端點 URL。
OIDC 設定
你可以使用 OIDC 提供者探索。按一下 Retrieve configuration 按鈕從提供者的 .well-known/openid-configuration 文件自動填入端點欄位,或者手動輸入每個端點 URL。
OIDC 需要下列設定詳細資訊:
| 欄位 | 必要 | 說明 |
|---|---|---|
client_id | 是 | 在身分識別提供者處註冊的用戶端識別碼。 |
client_secret | 是 | 已註冊應用程式的用戶端密碼。Bob 會安全地儲存此密碼,且永遠不會在 API 回應中傳回。 |
scopes | 是 | 授權流程中要求的範圍。此清單必須包含 openid。通常也包括 email 和用於核發重新整理權杖的提供者特定範圍,例如 offline_access。 |
authorization_endpoint | 是 | Bob 將使用者重新導向至的 HTTPS 授權 URL,用於登入。 |
token_endpoint | 是 | 用於將授權碼交換為權杖的 HTTPS 權杖 URL。 |
jwks_uri | 是 | 用於驗證 id_token 回應簽章的 JSON Web Key Set (JWKS) 的 HTTPS URL。 |
issuer | 否 | 身分識別提供者的 HTTPS 核發者識別碼。 |
prompt | 否 | 轉送至授權要求的 OIDC prompt 值。 |
OIDC 不使用 Attribute mapping。Bob 直接從 id_token 中的 email 宣告讀取使用者的電子郵件。
OIDC 設定範例
{
"authorization_endpoint": "https://corp.okta.com/oauth2/default/v1/authorize",
"token_endpoint": "https://corp.okta.com/oauth2/default/v1/token",
"issuer": "https://corp.okta.com/oauth2/default",
"client_id": "0oa1b2c3d4e5f6g7h8i9",
"client_secret": "super-secret-value",
"scopes": ["openid", "email", "offline_access"]
}OIDC 需求和限制
- Bob 在授權碼交換回應中需要
refresh_token。如果提供者未傳回,登入將失敗。 - 對於大多數提供者,將
offline_access新增至scopes會觸發重新整理權杖的核發。某些提供者使用不同的行為,因此請查看提供者的文件。 - OIDC 後通道登出不可用。
- 如果提供者變更其端點 URL,請在 Bob 中更新 IdP 設定。
步驟 2:新增網域篩選條件
儲存 IdP 後,新增應使用該 IdP 進行驗證的電子郵件網域。
在 Authentication 索引標籤中,找到剛建立的 IdP 並開啟其設定。 在 Domain filters 區段中,新增應使用此 IdP 的電子郵件網域。電子郵件地址符合已設定網域的使用者,在登入時將被重新導向至此 IdP。 儲存變更。
每個電子郵件網域只能與一個 IdP 建立關聯。如果某個網域已被另一個 IdP 使用,在解決衝突之前將無法儲存設定。在強制執行 SSO 之前,也必須驗證每個網域。請參閱驗證網域所有權。
驗證網域所有權
IBM Bob 要求在為網域強制執行 SSO 之前,驗證組織對每個網域的所有權。驗證方式為在網域中新增 DNS TXT 記錄。
前往 IBM Bob 管理頁面。 選取 Authentication 索引標籤。 選取包含您要驗證之網域的 IdP。 在 Domain filters 區段中,找到該網域並複製顯示的驗證碼。 在您的 DNS 提供者中,依下列格式為網域新增 TXT 記錄:
bob-verify=<verification-code>將 verification-code 取代為從 Domain filters 區段複製的驗證碼。 返回 Authentication 索引標籤,按一下該網域的 Check verification。
當 IBM Bob 成功偵測到 TXT 記錄時,網域驗證狀態將更新為 Verified。DNS 變更可能需要一段時間才能傳播。
移除身分識別提供者
前往 IBM Bob 管理頁面。 選取 Authentication 索引標籤。 找到要移除的 IdP,按一下 Delete。 在確認對話方塊中,按一下 Confirm。
刪除 IdP 將移除所有關聯網域的 SSO 設定。依賴該 IdP 進行驗證的使用者將需要透過其他方法登入。如果 IdP 擁有已驗證的網域,將顯示警告。