你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
重要
自 2025 年 5 月 1 日起,Azure AD B2C 将不再可供新客户购买。 在我们的常见问题解答中了解详细信息。
本教程介绍如何使用 PingAccess 和 PingFederate 扩展 Azure Active Directory B2C(Azure AD B2C)的功能。 PingAccess 提供对应用程序和 API 的访问权限,以及用于授权用户访问的策略引擎。 PingFederate 是一个企业联合服务器,用于用户身份验证和单一登录,它允许客户、员工和合作伙伴从设备访问应用程序。 将它们一起使用以启用安全混合访问(SHA)。
向 Internet 公开的许多电子商务网站和 Web 应用程序都部署在代理系统或反向代理系统后面。 这些代理系统预先进行身份验证、强制实施策略和路由流量。 典型方案包括保护 Web 应用程序免受入站 Web 流量的阻止,以及跨分布式服务器部署提供统一的会话管理。
通常,配置包括一个身份验证转换层,用于从 Web 应用程序外部化身份验证。 反向代理向 Web 应用程序提供经过身份验证的用户上下文,例如以明文形式或摘要形式的标头值。 应用程序不使用行业标准令牌,例如安全断言标记语言(SAML)、OAuth 或 OpenID Connect(OIDC)。 相反,代理提供身份验证上下文,并维护与最终用户代理(例如浏览器或本机应用程序)的会话。 作为中间人运行的服务,代理提供重要的会话控制。 代理服务高效且可扩展,不会成为其后应用程序的瓶颈。 此图是反向代理实现和通信流。
现代化
如果要在此类配置中实现标识平台现代化,客户可能担心:
- 将应用程序现代化与实现标识平台现代化的努力分离
- 使用现代化标识服务提供商时具有新式和旧式身份验证的环境
- 推动最终用户体验一致性
- 跨应用程序提供单一登录体验
在回答这些问题时,本教程中的方法是 Azure AD B2C、 PingAccess 和 PingFederate 集成。
共享环境
在技术上可行且经济高效的解决方案是配置反向代理系统以使用现代化标识系统,委托身份验证。
代理支持新式身份验证协议,并使用将用户发送到新标识提供者(IdP)的基于重定向的(被动)身份验证。
Azure AD B2C 作为标识提供者
在 Azure AD B2C 中,定义驱动用户体验和行为的策略,也称为用户旅程。 每个此类策略都会公开一个协议终结点,该终结点可将身份验证作为 IdP 执行。 在应用程序端,某些策略不需要特殊处理。 应用程序向策略公开的特定于协议的身份验证终结点发出标准身份验证请求。
可以将 Azure AD B2C 配置为跨策略共享相同的颁发者,或者为每个策略使用唯一的颁发者。 每个应用程序都可以通过发出协议原生身份验证请求来指向策略,这驱动用户行为,例如登录、注册和配置文件编辑。 此图显示了 OIDC 和 SAML 应用程序工作流。
旧版软件应用程序在准确重定向用户时可能会面临挑战。 对应用程序的访问请求可能不包括用户体验上下文。 在大多数情况下,代理层或 Web 应用程序上的集成代理会截获访问请求。
PingAccess 反向代理
可以将 PingAccess 部署为反向代理。 PingAccess 可以通过作为中间人,或作为来自 Web 应用程序服务器上运行的代理的重定向,来截获直接请求。
使用 OIDC、OAuth2 或 SAML 配置 PingAccess,以便通过上游身份验证提供程序进行身份验证。 可以在 PingAccess 服务器上为此配置上游 IdP。 请参阅下图。
在具有公开 IdP 的策略的典型 Azure AD B2C 部署中,这有点困难。 PingAccess 配置有一个上游 IdP。
PingFederate 联合身份验证代理
可以将 PingFederate 配置为上游 IdP 的身份验证提供程序或代理。 请参阅下图。
使用此函数可以上下文、动态或以声明方式将入站请求切换到 Azure AD B2C 策略。 请参阅协议序列流的下图。
先决条件
若要开始,需要:
- Azure 订阅
- 如果没有帐户,请获取 Azure 免费帐户
- 一个已关联到你的 Azure 订阅的 Azure AD B2C 租户
- 在 Docker 容器或 Azure 虚拟机(VM)中部署的 PingAccess 和 PingFederate
连接和通信
确认以下连接性和通信。
- PingAccess 服务器 - 与 PingFederate 服务器、客户端浏览器、OIDC、OAuth 已知以及 Azure AD B2C 服务和 PingFederate 服务器发布的密钥发现通信
- PingFederate 服务器 – 与 PingAccess 服务器、客户端浏览器、OIDC、以及由 Azure AD B2C 服务发布的 OAuth 已知信息和密钥发现进行通信
- 旧式或基于标头的 AuthN 应用程序 - 与 PingAccess 服务器相互通信
- SAML 信赖方应用程序 - 接收来自客户端的浏览器流量。 访问 Azure AD B2C 服务发布的 SAML 联合元数据。
- 现代应用 - 接收来自客户端的浏览器流量。 访问 OIDC、OAuth 已知和 Azure AD B2C 服务发布的密钥发现。
- REST API – 处理来自本机或 Web 客户端的流量。 访问 OIDC、OAuth 已知和 Azure AD B2C 服务发布的密钥发现
配置 Azure AD B2C
可以使用基本用户流或高级 Identity Enterprise Framework (IEF) 策略。 PingAccess 使用 WebFinger 协议生成基于颁发者值的元数据终结点,用于发现约定。 若要遵循此约定,请使用用户流策略属性更新 Azure AD B2C 颁发者。
在高级策略中,配置包括 IssuanceClaimPattern 元数据元素到 JWT 颁发者技术配置文件中的 AuthorityWithTfp 值。
配置 PingAccess 和 PingFederate
使用以下部分中的说明配置 PingAccess 和 PingFederate。 请参阅下图,了解整体集成用户流。
将 PingFederate 配置为令牌提供程序
若要将 PingFederate 配置为 PingAccess 的令牌提供程序,请确保已建立从 PingFederate 到 PingAccess 的连接。 确认从 PingAccess 到 PingFederate 的连接。
为基于标头的身份验证配置 PingAccess 应用程序
使用以下说明为目标 Web 应用程序创建 PingAccess 应用程序,以便进行基于标头的身份验证。
创建虚拟主机
重要
为每个应用程序创建虚拟主机。
创建虚拟主机:
- 转到 “设置>访问>虚拟主机”。
- 选择 “添加虚拟主机”。
- 对于 主机,请输入应用程序 URL 的 FQDN 部分。
- 对于“端口”,请输入 443。
- 选择“保存”。
创建 Web 会话
创建 Web 会话:
- 导航到 “设置>访问>Web 会话”。
- 选择 “添加 Web 会话”。
- 输入 Web 会话 的名称 。
- 选择 Cookie 类型: 已签名的 JWT 或 加密的 JWT。
- 输入 受众的唯一值。
- 对于 客户端 ID,请输入 Microsoft Entra 应用程序 ID。
- 对于 客户端密码,请在 Microsoft Entra ID 中输入为应用程序生成的 密钥 。
- (可选)通过 Microsoft 图形 API 创建和使用自定义声明:选择 “高级”。 取消选择“请求配置文件”和“刷新用户属性”。 若要了解自定义声明的详细信息,请参阅通过 Microsoft Entra 应用程序代理对本地应用使用基于标头的单一登录。
- 选择“保存”
创建标识映射
注释
如果多个应用程序需要在标头中有相同数据,你可以在多个应用程序中应用标识映射。
若要创建标识映射,请执行以下操作:
- 转到“设置”“访问”>“标识映射”>。
- 选择 “添加标识映射”。
- 指定 *名称。
- 选择“标头标识映射的类型”标识映射。
- 在 “属性映射” 表中,指定所需的映射。 例如,
属性名称 | 标题名称 |
---|---|
'UPN' | x-userprincipalname |
“email” | X-电子邮件 |
'oid' | X-oid 型 |
“scp” | x 范围 |
“amr” | X-AMR |
- 选择“保存”
创建站点
注释
在某些配置中,站点可以包含多个应用程序。 如果适用,可以将站点与多个应用程序一起使用。
若要创建网站,请:
- 转到 主>站点。
- 选择 “添加网站”。
- 输入站点 名称。
- 输入网站 目标。 目标是承载应用程序的服务器的 hostname:port 对。 不要在此字段中输入应用程序路径。 例如,https://mysite:9999/AppName 应用程序的目标值是 mysite:9999。
- 指示目标是否需要安全连接。
- 如果目标需要安全连接,请将“受信任的证书组”设置为 “信任任何”。
- 选择“保存”。
创建应用程序
在 PingAccess 中为 Azure 中您想要保护的每个应用程序创建应用程序。
转到 主>应用程序
选择“添加应用程序”
指定应用程序的名称
(可选)输入应用程序的说明
指定应用程序的 上下文根 。 例如,应用程序 https://mysite:9999/AppName 将具有 /AppName 的上下文根。 上下文根必须以斜杠(/)开头,必须不以斜杠(/)结尾,并且可以是多层级,例如 /Apps/MyApp。
选择创建的虚拟主机
注释
虚拟主机和上下文根的组合在 PingAccess 中必须是唯一的。
选择创建的 Web 会话
选择 你创建 的网站,其中包含应用程序
选择你创建的标识映射
选择 “已启用” 以在保存时启用站点
选择“保存”
配置 PingFederate 身份验证策略
将 PingFederate 身份验证策略配置为与 Azure AD B2C 租户提供的多个 IdP 进行联合认证。
创建一个协定来桥接 IdP 和 SP 之间的属性。 你应该只需要一个合同,除非 SP 需要从每个 IdP 获取一组不同的属性。 有关详细信息,请参阅 Ping 标识文档中的 联合中心和身份验证策略协定 。
对于每个 IdP,在 IdP 和 PingFederate 之间创建 IdP 连接,联合中心作为 SP。
在 “目标会话映射 ”窗口中,将适用的身份验证策略协定添加到 IdP 连接。
在 “选择器” 窗口中,配置身份验证选择器。 例如,请参阅 标识符第一个适配器 的实例,以将每个 IdP 映射到身份验证策略中的相应 IdP 连接。
在 PingFederate 与 SP 之间创建 SP 连接(联合中心作为 IdP)。
在 “身份验证源映射 ”窗口中将相应的身份验证策略协定添加到 SP 连接。
处理每个 IdP 以连接到 PingFederate,联合中心作为 SP。
处理 SP 以连接到 PingFederate,联合中心作为 IdP。
后续步骤
有关其他信息,请查看以下文章