为基于表单的 SSO 配置 F5 BIG-IP 访问策略管理器
了解如何配置 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),用于验证用户凭证、条件访问和 BIG-IP SSO。
- 通过 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 管理中心。
- 浏览到“标识”>“应用程序”>“企业应用程序”>“所有应用程序”。
- 在“所有应用程序”窗格中,选择“新建应用程序”。
- 此时会打开“浏览 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) 端点,以服务主机标头作为前缀。
- 然后,BIG-IP APM 用户会话在他们退出登录 Microsoft Entra ID 时结束。
- 选择“保存”。
- 关闭“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 文件。
对于 APM 对象,输入表示外部 SAML IdP 的标识提供者名称。 例如 MyVacation_EntraID。
选择“添加新行”。
选择新的 SAML IdP 连接器。
选择“更新”。
选择“确定”。
配置基于表单的 SSO
创建一个 APM SSO 对象,用于对后端应用程序执行 FBA SSO。
在客户端发起的模式或 BIG-IP 发起的模式下执行 FBA SSO。 这两种方法都通过将凭证注入用户名和密码标记来模拟用户登录。 表单已提交。 用户提供用于访问 FBA 应用程序的密码。 密码会缓存下来并重复用于其他 FBA 应用程序。
选择“访问”>“单一登录”。
选择“基于表单”。
选择“创建”。
对于“名称”,请输入描述性名称。 例如,Contoso\FBA\sso。
对于“使用 SSO 模板”,选择“无”。
对于“用户名源”,输入用户名源以预填充密码收集表单。 默认值
session.sso.token.last.username
运行良好,因为它具有已登录用户 Microsoft Entra 用户主体名称 (UPN)。对于“密码源”,请保留默认值
session.sso.token.last.password
,即 BIG-IP 用于缓存用户密码的 APM 变量对于“启动 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 会话管理设置定义会话终止和继续的条件。 在此区域中创建策略。
- 转到“访问策略”。
- 选择“访问配置文件”。
- 选择“访问配置文件”。
- 从列表中选择你的应用程序。
如果在 AMicrosoft 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 查看手册章节:身份验证
- 无密码身份验证
- 什么是条件访问?
- 用于实现远程工作的零信任框架