企业入门指南

管理身份提供商

为 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 类型:SAMLOIDC。 生成你的 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 URL
  • idp_certificate — 用于验证来自 IdP 的 SAML 响应的 PEM 编码 X.509 证书

Service provider 字段 — 使用上一步生成的文件:

  • sp_private_keysp_private_key.pem 的内容
  • sp_certificatesp_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_idclient_secret 作为表单正文参数发送。不接受 client_secret_basicprivate_key_jwtnone

令牌设置

设置必需值
访问令牌格式任意(JWT 或不透明 — Bob 不直接解析 IdP 访问令牌)
ID 令牌必须在每次 Authorization Code 交换和每次令牌刷新时颁发
ID 令牌签名算法RS256ES256PS256
刷新令牌轮换你可以使用刷新令牌轮换。Bob 在每次续订时存储新令牌。如果你的提供商轮换刷新令牌,请确保提供商仅在 Bob 收到替换令牌后才使上一个令牌失效(标准轮换行为,而非无宽限期的一次性使用)。

需要移交给 Bob 实例管理员的值

创建客户端应用程序后,将以下值提供给 Bob 实例管理员:

查找位置Bob 配置字段
客户端 ID应用程序凭据页面client_id
客户端密钥应用程序凭据页面client_secret
Authorization 端点 URL提供商的 OIDC 端点页面或 .well-known/openid-configurationauthorization_endpoint
令牌端点 URL提供商的 OIDC 端点页面或 .well-known/openid-configurationtoken_endpoint
JWKS URI提供商的 OIDC 端点页面或 .well-known/openid-configurationjwks_uri
Issuer URL提供商的 OIDC 端点页面或 .well-known/openid-configurationissuer
Userinfo 端点 URL(可选)提供商的 OIDC 端点页面或 .well-known/openid-configurationuserinfo_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_endpointBob 将用户重定向到的 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 拥有已验证的域,将显示警告。

这个主题怎么样?