如何将 B2CORE 用作受信任的身份提供商 (OIDC)
了解如何通过将 B2CORE 连接为 OpenID Connect (OIDC) 身份提供商,使第三方应用提供“使用 B2CORE 登录”功能
本指南适用于希望让其他应用程序(您的自有产品、合作伙伴的应用,或 Keycloak 等身份平台)允许用户使用现有 B2CORE 账户登录,而无需构建独立登录系统的经纪商。
B2CORE 作为 OpenID Connect (OIDC) 身份提供商。您的应用程序(依赖方)会将用户重定向到 B2CORE 进行登录,并获取证明其身份的令牌。用户只需针对其 B2CORE 身份验证一次;无需为您的应用创建单独的账户。
这可实现 单点登录 (SSO):用户使用其 B2CORE 账户登录一次,即可访问您连接的应用程序,无需单独登录。
此功能需要支付 一次性设置费用。在申请访问权限前,请联系您的客户经理或我们的支持团队,以确认费用和可用性。
这是否适合您?
如果符合以下情况,请使用此功能:
- 您拥有 Web 或移动应用,并希望提供“使用 B2CORE 登录”选项。
- 您希望将 B2CORE 联合到您已运行的其他身份系统中(例如,在您自己的 Keycloak realm 中将 B2CORE 添加为身份提供商)。
这是标准的 OAuth2 / OIDC——任何主流库或身份平台(Keycloak、Auth0、oidc-client-ts、openid-client、go-oidc、Passport、NextAuth 等)都可以使用它,因为客户端所需的一切信息均发布在一个发现文档中。
申请访问权限前需要确定的事项
请提前准备以下信息——在注册您的应用程序时,您的客户经理会要求您提供:
| 项目 | 我们需要的信息 |
|---|---|
| 应用程序名称 | 简短、易于识别的名称(用于我们的记录及任何同意页面)。 |
| 重定向 URI | 应用中应接收登录响应的精确 URL,例如 https://app.example.com/auth/callback。必须完全一致——协议、主机、路径和尾随斜杠都会影响匹配。 |
| 退出登录后重定向 URI | 用户退出登录后跳转到的位置,例如 https://app.example.com/。 |
| 作用域 | 始终需要 openid。如果需要用户的姓名/邮箱,请添加 profile 和 email。仅在需要长期有效的刷新令牌时添加 offline_access。 |
您将从我们这里获得什么
注册您的应用程序后,您将收到:
-
Client ID(与您提供的应用程序名称一致)。
-
通过安全渠道提供的 Client Secret。请像存储数据库密码一样存储它;它不会过期,但可根据请求轮换(请参阅须知)。
-
您的 B2CORE 实例的 OIDC 发现 URL:
https://<your-api-host>/srvsz/auth/hydra/v1/.well-known/openid-configuration将您的 OIDC 库指向此单一 URL——它会自行发现授权、令牌、userinfo、JWKS 和退出登录端点。您无需硬编码任何单独的端点。
集成您的应用程序
- 使用上述发现 URL、Client ID 和 Client Secret 配置您的 OIDC 客户端库。
- 如果您的库支持,请使用带 PKCE 的 授权码流程(建议 Web 和移动应用均使用)。
- 仅请求实际需要的作用域——至少为
openid,并视情况添加profile、email和offline_access。 - 如需获取用户的个人资料信息,请调用
/userinfo端点(或解码id_token),不要尝试从access_token中读取任何信息——访问令牌是不透明的,并非用于解析。 - 如需让用户退出登录,请将其重定向到发现文档中的
end_session_endpoint,并附带id_token_hint和您已注册的post_logout_redirect_uri。
联合身份验证而不是集成自定义应用? 如果您要在自己运行的其他身份平台(例如 Keycloak)中将 B2CORE 添加为身份提供商,而不是集成自定义应用,请使用上述相同的发现 URL、Client ID 和 Client Secret 将其配置为通用 OpenID Connect 提供商——具体步骤取决于您的平台。某些平台使用与您选择的提供商别名关联的固定回调 URL(Keycloak 的 broker endpoint 就是一个示例);如果您的平台也是如此,请在我们注册您的重定向 URI 之前与我们确认该别名,因为它们必须完全匹配。
须知
退出登录仅在本地生效。 重定向到退出登录端点会结束您应用的会话;不会让用户退出 B2CORE 本身或其已登录的任何其他应用。目前不支持跨应用“全部退出登录”。
刷新令牌为一次性使用。 每次刷新都会返回一个新刷新令牌以替换先前的令牌——刷新后请勿重复使用旧令牌。
重定向 URI 必须完全匹配。 请在初始申请中添加测试期间所需的任何本地/开发 URL;之后如需更改,则需要再次联系我们。
轮换您的 Client Secret 需要联系 B2Broker 支持团队。我们生成新密钥与您更新应用程序之间会有一个短暂窗口,在此期间,使用旧密钥的登录将失败——请将更换安排在低流量时段。
设置后的测试
- 从您的应用程序(或者,如果使用联合身份验证,则从您的身份平台)触发登录流程,并确认其通过 B2CORE 的登录页面进行重定向。
- 使用真实的 B2CORE 账户登录,并确认您已返回应用程序、成功登录且获得预期的用户信息。
- 如果您请求了
offline_access,请测试令牌刷新。 - 测试退出登录流程,并确认其清除了您应用程序的会话。
问题 / 支持
请联系您的 B2Broker 客户经理或支持渠道,并提供您的经纪商名称及上表中的应用程序详细信息。
最后更新于