你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
重要
自 2025 年 5 月 1 日起,Azure AD B2C 将不再可供新客户购买。 在我们的常见问题解答中了解详细信息。
了解如何将 Azure Active Directory B2C (Azure AD B2C) 与 F5 BIG-IP Access Policy Manager (APM) 集成。 可以通过 BIG-IP 安全性,结合 Azure AD B2C 预身份验证、条件访问 (CA) 和单点登录 (SSO),将旧版应用程序安全地公开到互联网。 F5 Inc. 侧重于连接的服务的交付、安全性、性能和可用性,包括计算、存储和网络资源。 它提供硬件、模块化软件和云就绪的虚拟设备解决方案。
将 F5 BIG-IP 应用交付控制器 (ADC) 部署为专用网络和互联网之间的安全网关。 有应用程序级检查和可自定义访问控制的功能。 如果部署为反向代理,请使用 BIG-IP 启用对业务应用程序的安全混合访问,并具有由 APM 管理的联合身份访问层。
转到 f5.com 资源和白皮书: 通过 Microsoft Entra ID 轻松配置对所有应用程序的安全访问
先决条件
若要开始,需要:
- Azure 订阅
- 如果没有帐户,请获取 Azure 免费帐户
- 一个链接到 Azure 订阅的 Azure AD B2C 租户
- 在 Azure 上部署 BIG-IP 或试用版 BIG-IP 虚拟环境 (VE)
- 以下任意 F5 BIG-IP 许可证:
- F5 BIG-IP® 最优捆绑套餐
- F5 BIG-IP Access Policy Manager™ 独立许可证
- BIG-IP F5 BIG-IP® Local Traffic Manager™ (LTM) 上的 F5 BIG-IP Access Policy Manager™ 加载项许可证
- 90 天的 BIG-IP 完整功能试用版许可证
- 基于标头的 Web 应用程序或用于测试的 IIS 应用
- 请参阅“设置 IIS 应用”
- 通过 HTTPS 发布服务的 SSL 证书,或在测试时使用默认值
- 请参阅 SSL 配置文件
方案说明
下面的场景基于标头,但可以使用这些方法来实现 Kerberos SSO。
对于此方案,内部应用程序的访问依赖于从旧代理系统接收 HTTP 授权标头。 销售代理可以定向到相应的内容区域。 该服务需要扩展到更广泛的使用者基础。 应用程序会升级以提供消费者身份验证选项,或者被替换。
理想情况下,应用程序升级支持使用新式控制平面进行直接管理和治理。 但是,实现现代化所需的时间和工作量会带来成本和潜在的停机时间。 相反,在公共 Internet 和内部 Azure 虚拟网络 (VNet) 之间部署 BIG-IP 虚拟版 (VE),以通过 Azure AD B2C 进行访问。 应用程序前面的 BIG-IP 支持将服务与 Azure AD B2C 预身份验证和基于标头的 SSO 叠加,从而改善应用程序安全状况。
安全混合访问解决方案具有以下组件:
- 应用程序 - 受 Azure AD B2C 保护的后端服务,BIG-IP 安全的混合访问
- Azure AD B2C - 标识提供者 (IdP) 和 OpenID Connect (OIDC) 授权服务器,用于验证用户凭据、多重身份验证和对 BIG-IP APM 的 SSO
- BIG-IP - 应用程序的反向代理。 BIG-IP APM 是 OIDC 客户端,首先将身份验证委托给 OIDC 授权服务器,然后将基于标头的 SSO 委托给后端服务。
下图展示了此方案中服务提供商(SP)发起的流程。
- 用户连接到应用程序终结点。 BIG-IP 是服务提供商。
- BIG-IP APM OIDC 客户端将用户重定向到 Azure AD B2C 租户终结点,即 OIDC 授权服务器
- Azure AD B2C 租户预验证用户并应用条件访问策略
- Azure AD B2C 使用授权代码将用户重定向回 SP
- OIDC 客户端要求授权服务器交换 ID 令牌的授权代码
- BIG-IP APM 授予用户访问权限,并在转发到应用程序的客户端请求中注入 HTTP 标头
Azure AD B2C 配置
若要启用 BIG-IP 并使用 Azure AD B2C 身份验证,请使用包含用户流或自定义策略的 Azure AD B2C 租户。
请参阅 教程:在 Azure AD B2C 中创建用户流和自定义策略
创建自定义特性
从 Azure AD B2C 用户对象、联合 IdP、API 连接器或用户注册获取自定义属性。 在指向应用的令牌中包含属性。
旧版应用程序需要特定属性,因此将它们包含在用户流中。 可以将它们替换为应用程序所需的属性。 或者,如果正在使用说明设置测试应用,那么请使用任何标头。
- 以至少 B2C IEF 策略管理员身份登录到 Azure 门户 。
- 在左侧窗格中,选择 “用户属性”。
- 选择 “添加” 以创建两个自定义属性。
- 对于代理 ID,请选择“字符串 数据类型”。
- 对于代理位置,选择字符串数据类型。
将属性添加到用户流
- 在左侧菜单中,导航到“ 策略>用户流”。
- 选择您的策略,例如 B2C_1_SignupSignin。
- 选择用户属性。
- 添加这两个自定义属性。
- 添加 显示名称 属性。 这些属性是在用户注册期间收集的。
- 选择 应用程序声明。
- 添加这两个自定义属性。
- 添加 显示名称。 这些属性会转到 BIG-IP。
- 选择运行用户流。
- 在用户流菜单的左侧导航栏上,验证已定义属性的提示。
了解详细信息: 教程:在 Azure AD B2C 中创建用户流和自定义策略
Azure AD B2C 联合
联合 BIG-IP 和 Azure AD B2C 以实现相互信任。 在 Azure AD B2C 租户中将 BIG-IP 注册为 OIDC 应用程序。
- 在门户中,选择 “应用注册>新建注册”。
- 输入应用 名称,例如 HeaderApp1。
- 在“支持的帐户类型”下,选择“任何标识提供者或组织目录中的帐户(用于通过用户流对用户进行身份验证)”。
- 在 “重定向 URI”下,选择 “Web”。
- 输入受保护的服务公共 FQDN。
- 输入路径。
- 保留剩余的选择。
- 选择“注册”。
- 导航到 证书和机密>+ 新客户端密码。
- 输入描述性名称
- 输入 BIG-IP 使用密码的 TTL。
- 注意 BIG-IP 配置的客户端密码。
重定向 URI 是 BIG-IP 终端节点。 身份验证后,授权服务器(Azure AD B2C)会将用户发送到终结点。
了解详细信息 :教程:在 Azure AD B2C for Azure AD B2C 中注册 Web 应用程序 。
BIG-IP 配置
对于 BIG-IP 配置,请使用 Guided Configuration v.7/8。 工作流框架专为访问拓扑而定制,可快速发布 Web 服务。
引导式配置版本
- 要确认版本,请使用管理员账户登录 BIG-IP Web 配置。
- 转到“访问”“引导式配置”>。
- 版本显示在右上角。
要升级引导式配置,请转到 my.f5.com for K85454683:在 BIG-IP 系统上升级 F5 BIG-IP 引导式配置。
SSL 配置文件
使用配置了客户端 SSL 配置文件的 BIG-IP,通过 TLS 加密来保护客户端流量。 导入与应用面向公众的 URL 使用的域名匹配的证书。 我们建议您使用公有证书颁发机构,但您可以使用 BIG-IP 自签名证书进行测试。
要在 BIG-IP VE 中添加和管理证书,请转到 BIG-IP System 的 techdocs.f5.com:SSL 管理。
引导式配置
- 若要启动部署向导,在 Web 配置中,转到 “访问>引导配置”。
- 选择 Federation>F5 作为 OAuth 客户端和资源服务器。
- 观察此场景的流摘要。
- 选择“下一步”。
- 随即启动向导。
OAuth 属性
在以下部分中,定义属性以启用 BIG-IP APM 与 OAuth 授权服务器(Azure AD B2C 租户)之间的联合。 在 BIG-IP 配置中,OAuth 被广泛引用。 该解决方案使用 OIDC(OAuth 2.0 协议上的标识层)。 OIDC 客户端验证用户身份并获取其他资料信息。
配置名称
配置显示名称有助于区分引导式配置中的部署配置。 无法更改名称,它仅显示在引导配置视图中。
模式
BIG-IP APM 是 OIDC 客户端,因此请选择 Client (客户端) 选项。
DNS 解析程序
指定的目标必须解析 Azure AD B2C 终结点的公共 IP 地址。 选择公共 DNS 解析程序,或创建新的解析程序。
提供者设置
将 Azure AD B2C 配置为 OAuth2 IdP。 引导配置具有 Azure AD B2C 模板,但不具有特定的范围。
添加新提供程序并对其进行配置:
OAuth 常规属性
性能 | DESCRIPTION |
---|---|
OAuth 提供程序类型 | 习惯 |
选择 OAuth 提供程序 | 新建或使用 OAuth 提供程序 |
名称 | B2C IdP 的显示名称。 登录时,此名称将作为提供程序选项显示给用户 |
令牌类型 | JSON Web 令牌 |
OAuth 策略设置
性能 | DESCRIPTION |
---|---|
范围 | 留空。 用户登录的 OpenID 范围会自动添加 |
授予类型 | 授权代码 |
启用 OpenID Connect | 选择将 APM OAuth 客户端置于 OIDC 模式的选项 |
流类型 | 授权代码 |
OAuth 提供程序设置
以下 OpenID URI 指的是 OIDC 客户端用来发现 IdP 信息(例如签名证书轮换)的元数据终结点。
- 找到 Azure AD B2C 租户的元数据终结点。导航到“应用注册”“终结点”>。
- 复制 Azure AD B2C OpenID Connect 元数据文档 URI。 例如,
https://wacketywackb2c .b2clogin.com/<tenantname>.onmicrosoft.com/<policyname>/v2.0/.well-known/openid-configuration
。 - 然后使用属性更新 URI,
https://<tenantname>.b2clogin.com/WacketywackB2C.onmicrosoft.com/B2C_1_SignUpIn/v2.0/.well-known/openid-configuration
。 - 将 URI 粘贴到浏览器中。
- 查看 Azure AD B2C 租户的 OIDC 元数据。
资产 | DESCRIPTION |
---|---|
观众 | 表示 Azure AD B2C 租户中 BIG-IP 的应用程序客户端 ID |
身份验证 URI | B2C OIDC 元数据中的授权终结点 |
令牌 URI | Azure AD B2C 元数据中的令牌终结点 |
用户信息请求 URI | 留空。 Azure AD B2C 不支持此功能 |
OpenID URI | 您创建的 OpenID URI 元数据终结点 |
忽略过期的证书验证 | 保持未选中状态 |
允许自签名的 JWK 配置证书 | 检查 |
受信任的 CA 捆绑包 | 选择“ca-bundle.crt”以使用 F5 信任的默认颁发机构 |
发现间隔 | 提供间隔,BIG-IP 将按此间隔查询 Azure AD B2C 租户以获取更新。 AGC 版本 16.1 0.0.19 中的最小间隔为 5 分钟。 |
OAuth 服务器设置
OIDC 授权服务器作为 Azure AD B2C 租户。
资产 | 说明 |
---|---|
客户 ID | 表示 Azure AD B2C 租户中 BIG-IP 的应用程序客户端 ID |
客户端密码 | 应用程序客户端密码 |
客户端-服务器 SSL 配置文件 | 设置 SSL 配置文件以确保 APM 通过 TLS 与 Azure AD B2C IdP 通信。 选择默认serverssl。 |
OAuth 请求设置
BIG-IP 在其预配置的请求集中要求 Azure AD B2C 请求。 但是,请求格式不正确,缺少重要参数。 因此,我们手动创建了它们。
令牌请求:已启用
资产 | DESCRIPTION |
---|---|
选择 OAuth 请求 | 新建 |
HTTP 方法 | 帖子 |
启用标头 | 未选中 |
启用参数 | 已选中 |
参数 | 参数名称 | 参数值 |
---|---|---|
客户编号 | 客户编号 | 无 |
随机数 | 随机数 | 无 |
重定向URI | 重定向URI | 无 |
范围 | 范围 | 无 |
response_type(响应类型) | response_type(响应类型) | 无 |
客户端密钥 | 客户端密钥 | 无 |
自定义 | 授权类型 (grant_type) | 授权码 |
身份验证重定向请求:已启用
资产 | DESCRIPTION |
---|---|
选择 OAuth 请求 | 新建 |
HTTP 方法 | 获取 |
提示类型 | 没有 |
启用标头 | 未选中 |
启用参数 | 已选中 |
参数 | 参数名称 | 参数值 |
---|---|---|
客户编号 | 客户编号 | 无 |
重定向URI | 重定向URI | 无 |
response_type(响应类型) | response_type(响应类型) | 无 |
范围 | 范围 | 无 |
随机数 | 随机数 | 无 |
令牌刷新请求: 已禁用 ,可以根据需要启用和配置。
OpenID UserInfo 请求:在全局 Azure AD B2C 租户中 已禁用,不受支持。
虚拟服务器属性
创建 BIG-IP 虚拟服务器,以拦截对受安全混合访问保护的后端服务的外部客户端请求。 为虚拟服务器分配一个映射到代表应用程序的 BIG-IP 服务终端节点的公有 DNS 记录的 IP。 如果可用,请使用虚拟服务器,否则提供以下属性。
资产 | DESCRIPTION |
---|---|
目标地址 | 后端应用程序的 BIG-IP 服务端点可以是私有或公有 IP。 |
服务端口 | HTTPS 协议 |
启用重定向端口 | 选择以便用户自动从 http 重定向到 https |
重定向端口 | HTTP |
客户端 SSL 配置文件 | 将预定义的 clientssl 配置文件与具有 SSL 证书的配置文件交换。 可以使用默认配置文件进行测试。 但它可能会导致浏览器警报。 |
池属性
后端服务在 BIG-IP 中显示为一个池,具有一个或多个应用程序服务器,虚拟服务器将入站流量定向到这些服务器。 选择一个池,否则创建一个新池。
资产 | DESCRIPTION |
---|---|
负载均衡方法 | 选择轮循机制 |
池服务器 | 后端应用程序的内部 IP |
港口 | 后端应用程序的服务端口 |
注释
确保 BIG-IP 可以看到池服务器地址。
SSO 设置
BIG-IP 支持 SSO 选项,但在 OAuth 客户端模式下,引导式配置仅限于 Kerberos 或 HTTP 标头。 启用 SSO 并使用以下信息让 APM 将定义的入站属性映射到出站标头。
资产 | DESCRIPTION |
---|---|
标头操作 | 插入 |
标头名称 | 姓名 |
标头值 | %{session.oauth.client.last.id_token.name} |
标头操作 | 插入 |
标头名称 | agentid |
标头值 | %{session.oauth.client.last.id_token.extension_AgentGeo} |
注释
大括号中的 APM 会话变量区分大小写。 当 Azure AD B2C 属性名称作为 AgentID 发送时,输入 agentid 会导致属性映射失败。 以小写形式定义属性。 在 Azure AD B2C 中,用户流使用门户中的属性名称提示用户输入更多属性。 因此,使用句子大小写而不是小写。
自定义属性
自定义用户在 APM 访问策略流中看到的屏幕的语言和外观。 编辑屏幕消息和提示、更改屏幕布局、颜色、图像以及本地化标题、说明和消息。
在 “窗体标题 ”文本字段中,将 F5 Networks
字符串替换为所需的名称。
会话管理属性
使用 BIG-IP 会话管理设置来定义终止会话或允许会话继续的条件。 为用户和 IP 地址以及错误页设置限制。 建议实现单一注销(SLO),以安全终止会话,降低未经授权的访问风险。
部署设置
选择 Deploy 以提交设置并创建 BIG-IP 和 APM 对象,以便对应用程序进行安全的混合访问。 该应用程序在条件访问中显示为目标资源。 为了提高安全性,可以阻止对应用程序的直接访问,从而强制执行通过 BIG-IP 的路径。
了解详细信息: Azure AD B2C 的标识保护和条件访问
测试登录注册流程
- 作为用户,请转到应用程序外部 URL。
- 此时会显示 BIG-IP 的 OAuth 客户端登录页。
- 使用授权码授权登录。 若要删除此步骤,请参阅 补充配置 部分。
- 注册并针对 Azure AD B2C 租户进行身份验证。
下图是用户登录对话框和登录欢迎页。
为了提高安全性,可以阻止对应用程序的直接访问,从而强制执行通过 BIG-IP 的路径。
补充配置
单一登出(SLO)
Azure AD B2C 支持标识提供者(IdP)和应用程序注销。请参阅“ 单一注销”。
若要实现 SLO,请让应用程序注销函数调用 Azure AD B2C 注销终结点。 然后,Azure AD B2C 会向 BIG-IP 发出最终的重定向。 此操作确保终止用户的应用程序 APM 会话。
替换 SLO 过程是在选择应用程序“退出登录”按钮时,使 BIG-IP 能够侦听请求。 检测到请求后,它会调用 Azure AD B2C 退出登录终结点。 此方法排除对应用程序进行更改。
要了解有关 iRules 的更多信息 BIG-IP,请访问 support.f5.com 网站,查询 K42052145:根据 URI 引用的文件名配置自动会话终止(注销)。
注释
无论采用哪种方法,请确保 Azure AD B2C 租户知道 APM 注销终结点。
- 在门户中,导航到 “管理>清单”。
- 找到属性
logoutUrl
。 它显示为空值。 - 添加 APM 注销后的 URI:
https://<mysite.com>/my.logout.php3
注释
<mysite.com>
是基于标头的应用的 BIG-IP FQDN。
优化的登录流
若要改善用户登录体验,请取消在Microsoft Entra 预身份验证之前显示的 OAuth 用户登录提示。
导航到“访问”“引导式配置”>。
在行最右侧,选择 挂锁 图标。
基于标头的应用程序会解锁严格的配置。
解锁严格配置可以防止对向导 UI 进行更改。 BIG-IP 对象与应用程序的已发布实例相关联,并且对直接管理开放。
导航到访问>配置文件/策略>访问配置文件(每会话策略)。
对于应用程序策略对象,在 “Per-Session 策略 ”列中,选择“ 编辑”。
若要删除 OAuth 登录页 策略对象,请选择 X。
在提示下,连接到上一个节点。
在左上角,选择“ 应用访问策略”。
关闭视觉编辑器选项卡。
尝试连接到应用程序时,会显示 Azure AD B2C 登录页。
注释
如果重新启用严格模式并部署配置,则在引导式配置 UI 之外执行的设置将被覆盖。 通过手动为生产服务创建配置对象来实现此方案。
故障排除
如果阻止访问受保护的应用程序,请使用以下故障排除指南。
日志详细程度
BIG-IP 日志包含隔离身份验证和 SSO 问题的信息。 增加日志详细级别。
- 转到“访问策略”“概述”>“事件日志”“设置” 。
- 选择已发布应用程序的行,然后 编辑>访问系统日志。
- 从 SSO 列表中,选择“调试”。
- 选择“确定”。
- 在查看日志之前,请复制问题。
完成后,还原以前的设置。
BIG-IP 错误消息
如果在 Azure AD B2C 身份验证后看到 BIG-IP 错误消息,则问题可能与从 Microsoft Entra ID 到 BIG-IP 的 SSO 有关。
- 导航到 Access>概述>访问报表。
- 运行最后一小时的报告
- 查看日志以获取线索。
- 选择 “查看会话变量 ”链接。
- 确定 APM 是否收到预期的 Microsoft Entra 声明。
无 BIG-IP 错误消息
如果未显示 BIG-IP 错误消息,则问题可能与后端请求或从 BIG-IP 到应用程序的 SSO 有关。
- 转到“访问策略”“概述”>“活动会话” 。
- 选择活动会话的链接。
- 选择 “视图变量” 链接。
- 审查以确定根本原因,特别是如果 BIG-IP APM 获得了不准确的会话属性。
- 使用应用程序日志帮助了解它是否以标头的形式收到属性。
引导式配置 v8 已知问题
如果使用引导式配置 v8,已知问题会在成功进行 Azure AD B2C 身份验证后生成以下错误。 问题可能是 AGC 在部署期间未启用自动 JWT 设置。 APM 无法获取当前的令牌签名密钥。 F5 工程师团队正在调查根本原因。
相同的访问日志提供了详细信息。
手动启用设置
- 导航到“访问”“引导式配置”>。
- 在基于标头的应用程序行的最右侧,选择“挂锁”。
- 导航到“访问”“联合”>“OAuth 客户端/资源服务器”“提供程序”>>。
- 选择 Azure AD B2C 配置的提供程序。
- 选中“ 使用自动 JWT ”框。
- 选择“发现”。
- 选择“保存”。
- “密钥”(JWT)字段具有 OpenID URI 元数据中的令牌签名证书密钥 ID(KID)。
- 在左上角,选择“ 应用访问策略”。
- 选择应用。
有关详细信息,请转到 OAuth 客户端和资源服务器故障排除提示 techdocs.f5.com