管理身份提供商
为 SAML 或 OIDC 单点登录配置自定义身份提供商 (IdP),使组织用户能够使用现有的企业凭据进行身份验证。
身份提供商管理仅适用于 Enterprise 计划的管理员。
配置自定义身份提供商 (IdP),为组织启用单点登录 (SSO)。配置 IdP 后,你在 IDE、Bob Shell 和 Bob Web 中登录 IBM Bob 时,Bob 会将你重定向到该 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 拥有已验证的域,将显示警告。