了解如何配置 F5 BIG-IP Access Policy Manager (APM) 与 Microsoft Entra ID,以实现对基于表单的应用程序的安全混合访问 (SHA)。 适用于 Microsoft Entra 单一登录 (SSO) 的 BIG-IP 已发布服务具有以下优势:
- 通过 Microsoft Entra 预身份验证和条件访问改进了零信任治理
- Microsoft Entra ID 与 BIG-IP 已发布服务之间的完整 SSO
- 从一个控制平面管理标识和访问
了解详细信息:
方案描述
在此方案中,为基于表单的身份验证 (FBA) 配置了一个内部旧版应用程序。 理想情况下,由 Microsoft Entra ID 来管理应用程序访问,因为旧版服务缺少新式身份验证协议。 现代化需要时间和精力,从而带来停机的风险。 相反,在公共 Internet 和内部应用程序之间部署 BIG-IP。 此配置会限制对应用程序的入站访问。
通过应用程序前面的 BIG-IP,你可以使用 Microsoft Entra 预身份验证和基于标头的 SSO 来叠加服务。 叠加可改善应用程序安全状况。
方案体系结构
SHA 解决方案包含以下组件:
-
应用程序 - 受 SHA 保护的 BIG-IP 发布的服务。
- 应用程序验证用户凭据
- 使用任何目录、开源软件等
-
Microsoft Entra ID - 安全断言标记语言(SAML)标识提供者(IdP),用于验证用户凭据、条件访问和 SSO 到 BIG-IP。
- 通过 SSO,Microsoft Entra ID 为 BIG-IP 提供属性(包括用户标识符)
-
BIG-IP - 应用程序的反向代理和 SAML 服务提供商 (SP)。
- BIG-IP 将身份验证委托给 SAML IdP,然后对后端应用程序执行基于标头的 SSO。
- SSO 针对其他基于表单的身份验证应用程序使用缓存的用户凭据
SHA 支持 SP 和 IdP 发起的流。 下图演示了 SP 发起的流。
- 用户连接到应用程序终结点 (BIG-IP)。
- BIG-IP APM 访问策略将用户重定向到 Microsoft Entra ID (SAML IdP)。
- Microsoft Entra 对用户进行预身份验证,并应用强制实施的条件访问策略。
- 用户被重定向到 BIG-IP (SAML SP),并使用颁发的 SAML 令牌执行 SSO。
- BIG-IP 提示用户输入应用程序密码并将密码存储在缓存中。
- BIG-IP 向应用程序发送请求并接收登录表单。
- APM 脚本填写用户名和密码,然后提交表单。
- Web 服务器为应用程序有效负载提供服务并将其发送到客户端。
先决条件
你需要下列组件:
- Azure 订阅
- 如果没有帐户,请获取 Azure 免费帐户
- 以下角色之一:云应用程序管理员或应用程序管理员
- BIG-IP,或者在 Azure 中部署 BIG-IP Virtual Edition (VE)
- 以下任意 F5 BIG-IP 许可证:
- F5 BIG-IP® Best 捆绑包
- F5 BIG-IP Access Policy Manager™ (APM) 独立许可证
- BIG-IP F5 BIG-IP® Local Traffic Manager™ (LTM) 上的 F5 BIG-IP Access Policy Manager™ (APM) 加载项许可证
- 90 天的 BIG-IP 完整功能试用版。 请参阅 免费试用版
- 从本地目录同步到 Microsoft Entra ID 的用户标识
- SSL 证书(用于通过 HTTPS 发布服务)或者在测试时使用默认证书
- 请参阅 SSL 配置文件
- 基于表单的身份验证应用程序,或设置 Internet Information Services (IIS) 基于表单的身份验证 (FBA) 应用程序以进行测试
- 请参阅基于表单的身份验证
BIG-IP 配置
本文中的配置是灵活的 SHA 实现:手动创建 BIG-IP 配置对象。 请将此方法用于引导式配置模板未涵盖的场景。
注意
请将示例字符串或值替换为你环境中的字符串或值。
在 Microsoft Entra ID 中注册 F5 BIG-IP
BIG-IP 注册是实体之间 SSO 的第一步。 从 F5 BIG-IP 库模板创建的应用是依赖方,表示 BIG-IP 已发布应用程序的 SAML SP。
- 以至少云应用程序管理员身份登录到 Microsoft Entra 管理中心。
- 请导航到 Entra ID>企业应用程序>所有应用程序。
- 在“所有应用程序”窗格中,选择“新建应用程序”。
- 此时会打开“浏览 Microsoft Entra 库”窗格。
- 磁贴适用于云平台、本地应用程序和特色应用程序。 特色应用程序图标表示支持联合 SSO 和预配。
- 在 Azure 库中,搜索 F5。
- 请选择“F5 BIG-IP APM Microsoft Entra ID 集成”。
- 输入一个名称,新应用程序将使用此名称来识别应用程序实例。
- 选择 “添加”。
- 选择“创建”。
向 F5 BIG-IP 启用 SSO
配置 BIG-IP 注册以满足 BIG-IP APM 请求的 SAML 令牌。
- 在左侧菜单中的“ 管理 ”部分,选择 “单一登录”。
- 此时会显示“单一登录”窗格。
- 在“选择单一登录方法”页上选择“SAML”。
- 选择 “否”,稍后将保存。
- 在“ 使用 SAML 设置单一登录 ”窗格中,选择 笔 图标。
- 对于 标识符,请将该值替换为 BIG-IP 已发布的应用程序 URL。
- 对于 回复 URL,请替换该值,但保留应用程序 SAML SP 终结点的路径。 使用此配置,SAML 流将在 IdP 发起的模式下运行。
- Microsoft Entra ID 会发出 SAML 断言,随后系统会将用户重定向到 BIG-IP 终结点。
- 对于 SP 发起的模式,对于“登录 URL”,输入应用程序 URL。
- 对于“退出登录 URL”,请输入 BIG-IP APM 单一退出登录 (SLO) 终结点,以服务主机标头作为前缀。
- 然后,当用户从 Microsoft Entra ID 注销时,BIG-IP APM 用户会话结束。
- 选择“保存”。
- 关闭“SAML 配置”窗格。
- 跳过 SSO 测试提示。
- 记下“用户特性&声明”部分的属性。 Microsoft Entra ID 会发出 BIG-IP APM 身份验证的属性和与后端身份验证之间的 SSO。
- 在 “SAML 签名证书 ”窗格中,选择“ 下载”。
- 联合元数据 XML 文件将保存到计算机。
注意
自流量管理操作系统 (TMOS) v16 起,SAML SLO 终结点为 /saml/sp/profile/redirect/slo。
注意
Microsoft Entra SAML 签名证书的有效期为三年。
了解详细信息 :教程:管理联合单一登录的证书
分配用户和组
Microsoft Entra ID 会向已有权访问应用程序的用户颁发令牌。 若要向特定用户和组授予应用程序访问权限,请执行以下操作:
- 在“F5 BIG-IP 应用程序的概述”窗格上,选择“分配用户和组”。
- 选择“+ 添加用户/组”。
- 选择所需的用户和组。
- 选择“分配”。
BIG-IP 高级配置
使用以下说明配置 BIG-IP。
配置 SAML 服务提供程序设置
SAML SP 设置定义了 SAML SP 属性,APM 将使用这些属性通过 SAML 预身份验证来覆盖旧版应用程序。 进行配置:
选择访问>联合身份验证>SAML 服务提供程序。
选择 “本地 SP 服务”。
选择“创建”。
在新建 SAML SP 服务页面,对于名称和实体 ID,输入定义的名称和实体 ID。
注意
如果实体 ID 与已发布 URL 的主机名部分不匹配,则需要 SP 名称设置值。 或者,如果实体 ID 未采用常规的基于主机名的 URL 格式,则需要值。
如果实体 ID 为
urn:myvacation:contosoonline,请输入应用程序外部方案和主机名。
配置外部 IdP 连接器
SAML IdP 连接器定义 BIG-IP APM 信任 Microsoft Entra ID 作为其 SAML IdP 所需的设置。 这些设置将 SAML 服务提供程序连接到 SAML IdP,从而在 APM 和 Microsoft Entra ID 之间建立联合身份验证信任。
配置连接器:
选择新的 SAML 服务提供程序对象。
选择 绑定/解绑 IdP 连接器。
在“新建 IdP 连接器”列表中,选择“从元数据”。
在“ 新建 SAML IdP 连接器 ”窗格中,浏览已下载的联合元数据 XML 文件。
输入表示外部 SAML IdP 的 APM 对象的 标识提供者名称 。 例如 MyVacation_EntraID。
选择“ 添加新行”。
选择新的 SAML IdP 连接器。
选择“更新”。
选择“确定”。
配置基于表单的 SSO
创建一个 APM SSO 对象,用于对后端应用程序执行 FBA SSO。
在客户端发起的模式或 BIG-IP 发起的模式下执行 FBA SSO。 这两种方法都通过将凭据注入用户名和密码标记来模拟用户登录。 表单已提交。 用户提供用于访问 FBA 应用程序的密码。 密码会缓存下来并重复用于其他 FBA 应用程序。
选择 “访问>单一登录”。
选择“基于表单”。
选择“创建”。
对于 Name,请输入描述性名称。 例如,Contoso\FBA\sso。
对于 “使用 SSO 模板”,请选择“ 无”。
对于 用户名源,输入用户名源以预填充密码收集表单。 默认值
session.sso.token.last.username运行良好,因为它具有已登录用户 Microsoft Entra 用户主体名称 (UPN)。对于 密码源,请保留默认
session.sso.token.last.password的 APM 变量,BIG-IP 用于缓存用户密码。
对于“启动 URI”,输入 FBA 应用程序登录 URI。 如果请求 URI 与此 URI 值匹配,则基于 APM 表单的身份验证将执行 SSO。
对于 表单操作,请将其留空。 然后,原始请求 URL 将用于 SSO。
对于“用户名的表单参数”,请输入登录表单用户名字段元素。 使用浏览器开发工具确定元素。
对于表单参数“密码”,请输入登录表单的密码字段元素。 使用浏览器开发工具确定元素。
若要了解详细信息,请转到 手动章节 techdocs.f5.com:单一登录方法。
配置访问配置文件
访问配置文件绑定了 APM 元素,包括访问策略、SSO 配置和 UI 设置,这些元素用于管理对 BIG-IP 虚拟服务器的访问权限。
选择 “访问>配置文件/策略”。
选择“访问配置文件(每会话策略)”。
选择“创建”。
输入“名称”。
对于“配置文件类型”,选择“全部”。
对于 SSO 配置,请选择创建的 FBA SSO 配置对象。
对于 接受的语言,请选择至少一种语言。
在“每会话策略”列中,对于配置文件选择“编辑”。
APM 可视化策略编辑器随即启动。
在回退选项下,选择+符号。
- 在弹出窗口中,选择“ 身份验证”。
- 选择 “SAML 身份验证”。
- 选择“添加项”。
- 在“SAML 身份验证 SP”上,将“名称”更改为“Microsoft Entra 身份验证”。
- 在 AAA 服务器 下拉列表中,输入创建的 SAML 服务提供程序对象。
- 在成功分支上,选择+符号。
- 在弹出窗口中,选择“ 身份验证”。
- 选择 “登录”页。
- 选择“添加项”。
- 对于 用户名,在 “只读 ”列中,选择“ 是”。
对于登录页面回退,请选择 + 符号。 此操作将添加 SSO 凭据映射对象。
在弹出窗口中,选择“ 分配 ”选项卡。
选择 SSO 凭据映射。
选择“添加项”。
在 “变量分配:SSO 凭据映射”上,保留默认设置。
选择“保存”。
在“ 拒绝 ”上方框中,选择链接。
成功分支更改为“允许”。
选择“保存”。
(可选)配置属性映射
可以添加 LogonID_Mapping 配置。 然后,BIG-IP 活动会话列表包含已登录用户 UPN,而不是会话编号。 请使用此信息分析日志或进行故障排除。
对于 SAML 身份验证成功 分支,请选择 + 符号。
在弹出窗口中,选择“ 分配”。
选择 “变量分配”。
选择“添加项”。
在“ 属性 ”选项卡上,输入 名称。 例如 LogonID_Mapping。
在“ 变量分配”下,选择“ 添加新项”。
选择“更改”。
对于 自定义变量,请使用
session.logon.last.username。对于“会话变量”,请使用
session.saml.last.identity。选择“已完成”。
选择“保存”。
选择 “应用访问策略”。
关闭可视化策略编辑器。
配置后端池
为了让 BIG-IP 能够正确地转发客户端流量,请创建一个 BIG-IP 节点对象来表示托管应用程序的后端服务器。 然后,将该节点放入 BIG-IP 服务器池。
选择本地流量>池。
选择“池列表”。
选择“创建”。
输入服务器池对象 的名称 。 例如 MyApps_VMs。
对于 节点名称,请输入服务器显示名称。 此服务器托管后端 Web 应用程序。
对于 地址,请输入应用程序服务器主机 IP 地址。
对于 服务端口 ,请输入应用程序正在侦听的 HTTP/S 端口。
注意
运行状况监视器需要本文未涵盖的配置。 转到 support.f5.com 查看 K13397:BIG-IP DNS 系统的 HTTP 运行状况监视器请求格式概述。
配置虚拟服务器
虚拟服务器是一个 BIG-IP 数据平面对象,由虚拟 IP 地址表示。 服务器侦听客户端对应用程序的请求。 任何收到的流量都会根据与虚拟服务器关联的 APM 访问配置文件进行处理和评估。 流量会根据策略进行定向。
若要配置虚拟服务器:
选择 本地流量>虚拟服务器。
选择 “虚拟服务器列表”。
选择“创建”。
输入“名称”。
对于 目标地址/掩码,选择 “主机 ”并输入 IPv4 或 IPv6 地址。 该地址接收已发布后端应用程序的客户端流量。
对于 服务端口,请选择 “端口”,输入 443,然后选择 “HTTPS”。
对于 HTTP 配置文件(客户端),请选择 http。
对于 SSL 配置文件(客户端),请选择创建的配置文件,或保留用于测试的默认值。 此选项允许用于传输层安全性 (TLS) 的虚拟服务器通过 HTTPS 发布服务。
对于 源地址转换,请选择“ 自动映射”。
在 “访问策略”下的 “访问配置文件 ”框中,输入创建的名称。 此操作会将 Microsoft Entra SAML 预身份验证配置文件和 FBA SSO 策略绑定到虚拟服务器。
- 在 “资源”下,对于 “默认池”,选择创建的后端池对象。
- 选择“已完成”。
配置会话管理设置
BIG-IP 会话管理设置定义会话终止和继续的条件。 在此区域中创建策略。
- 转到 访问策略。
- 选择 访问权限配置。
- 选择“访问配置文件”。
- 从列表中选择你的应用程序。
如果在 Microsoft Entra ID 中定义了单一退出登录 URI 值,那么从 MyApps 发起的 IdP 退出登录会结束客户端与 BIG-IP APM 之间的会话。 导入的应用程序联合身份验证元数据 XML 文件为 APM 提供了 Microsoft Entra SAML 终结点,用于 SP 发起的退出登录。请确保 APM 对用户退出登录做出正确响应。
如果没有 BIG-IP Web 门户,则用户无法指示 APM 退出登录。如果用户退出登录应用程序,则 BIG-IP 无法获知此情况。 可以通过 SSO 恢复应用程序会话。 对于 SP 发起的退出登录,请确保会话安全终止。
可以将 SLO 函数添加到应用程序 注销 按钮。 此功能会将客户端重定向到 Microsoft Entra SAML 退出登录终结点。 若要查找 SAML 注销终结点,请转到 应用注册 > 终结点。
如果无法更改应用,请让 BIG-IP 侦听应用退出登录调用并触发 SLO。
了解详细信息:
已发布应用程序
你的应用程序已发布,并且可通过 SHA 利用应用程序 URL 或 Microsoft 门户访问。
该应用程序在条件访问中显示为目标资源。 了解详细信息: 构建条件访问策略。
为了提高安全性,阻止对应用程序的直接访问,通过 BIG-IP 强制执行路径。
测试
- 用户连接到应用程序外部 URL,或在“我的应用”中,然后选择应用程序图标。
- 用户向 Microsoft Entra ID 进行身份验证。
- 用户被重定向到应用程序的 BIG-IP 终结点。
- 此时会显示密码提示。
- APM 使用来自 Microsoft Entra ID 的 UPN 填充用户名。 为确保会话一致性,用户名是只读的。 如果需要,请隐藏此字段。
- 将提交该信息。
- 用户登录到应用程序。
故障排除
进行故障排除时,请考虑以下信息:
BIG-IP 在分析 URI 上的登录表单时执行 FBA SSO
- BIG-IP 从配置中查找用户名和密码元素标记
确认元素标记一致,否则 SSO 会失败
动态生成的复杂表单可能需要开发工具分析来了解登录表单
客户端发起更适合具有多个表单的登录页面
- 可以选择表单名称并自定义 JavaScript 表单处理程序逻辑
FBA SSO 方法隐藏表单交互,以优化用户体验和安全性:
- 可以验证是否注入了凭据
- 在客户端发起模式下,在 SSO 配置文件中禁用表单自动提交
- 使用开发工具禁用阻止登录页面显示的两个样式属性
增加日志详细程度
BIG-IP 日志包含用于隔离身份验证和 SSO 问题的信息。 增加日志详细级别:
- 转到 访问策略>概述。
- 选择 事件日志。
- 选择设置。
- 选择已发布应用程序所在的行。
- 选择“编辑”。
- 选择 “访问系统日志”。
- 在 SSO 列表中,选择 “调试”。
- 选择“确定”。
- 重现问题。
- 查看日志。
还原设置,否则数据过多。
BIG-IP 错误消息
如果在 Microsoft Entra 预身份验证后出现 BIG-IP 错误,则问题可能与从 Microsoft Entra ID 到 BIG-IP 的 SSO 有关。
- 转到 “访问>概述”。
- 选择“访问报告”。
- 运行过去一小时的报告。
- 查看日志以获取线索。
使用会话的“查看会话变量”链接,确定 APM 是否收到预期的 Microsoft Entra 声明。
无 BIG-IP 错误消息
如果未显示 BIG-IP 错误消息,则问题可能与后端请求或 BIG-IP 到应用程序的 SSO 有关。
- 选择 “访问策略>概述”。
- 选择 活动会话。
- 选择活动会话链接。
使用此位置的 “查看变量 ”链接来帮助确定根本原因,尤其是 APM 未能获取正确的用户标识符和密码时。
若要了解详细信息,请转到 手动章节:会话变量 techdocs.f5.com。
资源
- 转到手动章节:身份验证 techdocs.f5.com
- 无密码身份验证
- 什么是条件访问?
- 零信任框架以启用远程工作