为基于表单的 SSO 配置 F5 BIG-IP 访问策略管理器

了解如何配置 F5 BIG-IP Access Policy Manager (APM) 与 Microsoft Entra ID,以实现对基于表单的应用程序的安全混合访问 (SHA)。 适用于 Microsoft Entra 单一登录 (SSO) 的 BIG-IP 已发布服务具有以下优势:

了解详细信息:

方案描述

在此方案中,为基于表单的身份验证 (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 启动的流。

服务提供商发起的流示意图。

  1. 用户连接到应用程序端点 (BIG-IP)。
  2. BIG-IP APM 访问策略将用户重定向到 Microsoft Entra ID (SAML IdP)。
  3. Microsoft Entra 对用户进行预身份验证,并应用强制实施的条件访问策略。
  4. 用户被重定向到 BIG-IP (SAML SP),并使用颁发的 SAML 令牌执行 SSO。
  5. BIG-IP 提示用户输入应用程序密码并将密码存储在缓存中。
  6. BIG-IP 向应用程序发送请求并接收登录表单。
  7. APM 脚本填写用户名和密码,然后提交表单。
  8. Web 服务器为应用程序有效负载提供服务并将其发送到客户端。

先决条件

你需要下列组件:

  • 一个 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 发布服务)或者在测试时使用默认证书
  • 基于表单的身份验证应用程序,或设置 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。

  1. 至少以云应用程序管理员身份登录到 Microsoft Entra 管理中心
  2. 浏览到“标识”>“应用程序”>“企业应用程序”>“所有应用程序”。
  3. 在“所有应用程序”窗格中,选择“新建应用程序”
  4. 此时会打开“浏览 Microsoft Entra 库”窗格。
  5. 磁贴适用于云平台、本地应用程序和特色应用程序。 “特色应用程序”图标表示支持联合 SSO 和设置。
  6. 在 Azure 库中,搜索 F5
  7. 请选择“F5 BIG-IP APM Microsoft Entra ID 集成”
  8. 输入新应用程序用于识别应用程序实例的名称
  9. 选择“添加”。
  10. 选择“创建”。

向 F5 BIG-IP 启用 SSO

配置 BIG-IP 注册以满足 BIG-IP APM 请求的 SAML 令牌。

  1. 在左侧菜单的“管理”部分,选择“单一登录”。
  2. 此时会显示“单一登录”窗格。
  3. 在“选择单一登录方法”页上选择“SAML”
  4. 选择“否,稍后保存”。
  5. 在“设置 SAML 单一登录”窗格上,选择图标。
  6. 对于“标识符”,请将值替换为 BIG-IP 发布的应用程序 URL。
  7. 对于“回复 URL”,替换值,但保留应用程序 SAML SP 端点的路径。 使用此配置,SAML 流将在 IdP 发起的模式下运行。
  8. Microsoft Entra ID 会发出 SAML 断言,随后系统会将用户重定向到 BIG-IP 端点。
  9. 对于 SP 发起的模式,对于“登录 URL”,输入应用程序 URL。
  10. 对于“退出登录 URL”,请输入 BIG-IP APM 单一退出登录 (SLO) 端点,以服务主机标头作为前缀。
  11. 然后,BIG-IP APM 用户会话在他们退出登录 Microsoft Entra ID 时结束。
  12. 选择“保存”
  13. 关闭“SAML 配置”窗格。
  14. 跳过 SSO 测试提示。
  15. 记下“用户属性和声明”部分的属性。 Microsoft Entra ID 会发出 BIG-IP APM 身份验证的属性和与后端身份验证之间的 SSO。
  16. 在“SAML 签名证书”窗格上,选择“下载”。
  17. 联合元数据 XML 文件将保存到你的计算机。

注意

自流量管理操作系统 (TMOS) v16 起,SAML SLO 端点为 /saml/sp/profile/redirect/slo

SAML 配置中 URL 的屏幕截图。

注意

Microsoft Entra SAML 签名证书的有效期为三年。

了解详细信息:教程:管理用于联合单一登录的证书

分配用户和组

Microsoft Entra ID 会向已有权访问应用程序的用户颁发令牌。 如果要向特定用户和组授予应用程序访问权限,请执行以下操作:

  1. 在“F5 BIG-IP 应用程序的概述”窗格上,选择“分配用户和组”
  2. 选择“+ 添加用户/组”
  3. 选择所需的用户和组。
  4. 选择“分配”。

BIG-IP 高级配置

使用以下说明配置 BIG-IP。

配置 SAML 服务提供方设置

SAML SP 设置定义了 SAML SP 属性,APM 将使用这些属性通过 SAML 预身份验证来覆盖旧版应用程序。 进行配置:

  1. 选择“访问”>“联合身份验证”>“SAML 服务提供方”。

  2. 选择“本地 SP 服务”。

  3. 选择“创建”。

    “SAML 服务提供方”选项卡上的“创建”选项的屏幕截图。

  4. 在“新建 SAML SP 服务”上,为“名称”和“实体 ID”输入已定义名称和实体 ID。

    “新建 SAML SP 服务”下的“名称”和“实体 ID”字段的屏幕截图。

    注意

    如果实体 ID 与已发布 URL 的主机名部分不匹配,则需要“SP 名称设置”值。 或者,如果实体 ID 未采用常规的基于主机名的 URL 格式,则需要值。

  5. 如果实体 ID 为 urn:myvacation:contosoonline,请输入应用程序外部方案和主机名。

配置外部 IdP 连接器

SAML IdP 连接器定义 BIG-IP APM 信任 Microsoft Entra ID 作为其 SAML IdP 所需的设置。 这些设置将 SAML 服务提供方连接到 SAML IdP,从而在 APM 和 Microsoft Entra ID 之间建立联合身份验证信任。

配置连接器:

  1. 选择新的 SAML 服务提供方对象。

  2. 选择“绑定/取消绑定 IdP 连接器”。

    “SAML 服务提供方”选项卡上的“绑定/取消绑定 IdP 连接器”选项的屏幕截图。

  3. 在“新建 IdP 连接器”列表中,选择“从元数据”。

    “新建 IdP 连接器”下拉列表中的“从元数据”选项的屏幕截图。

  4. 在“新建 SAML IdP 连接器”窗格上,浏览下载的联合元数据 XML 文件。

  5. 对于 APM 对象,输入表示外部 SAML IdP 的标识提供者名称。 例如 MyVacation_EntraID。

    “新建 SAML IdP 连接器”上的“选择文件”和“标识提供者名称”字段的屏幕截图。

  6. 选择“添加新行”

  7. 选择新的 SAML IdP 连接器

  8. 选择“更新”

    “更新”选项的屏幕截图。

  9. 选择“确定”

    “编辑使用此 SP 的 SAML IdP”对话框的屏幕截图。

配置基于表单的 SSO

创建一个 APM SSO 对象,用于对后端应用程序执行 FBA SSO。

在客户端发起的模式或 BIG-IP 发起的模式下执行 FBA SSO。 这两种方法都通过将凭证注入用户名和密码标记来模拟用户登录。 表单已提交。 用户提供用于访问 FBA 应用程序的密码。 密码会缓存下来并重复用于其他 FBA 应用程序。

  1. 选择“访问”>“单一登录”。

  2. 选择“基于表单”。

  3. 选择“创建”。

  4. 对于“名称”,请输入描述性名称。 例如,Contoso\FBA\sso。

  5. 对于“使用 SSO 模板”,选择“”。

  6. 对于“用户名源”,输入用户名源以预填充密码收集表单。 默认值 session.sso.token.last.username 运行良好,因为它具有已登录用户 Microsoft Entra 用户主体名称 (UPN)。

  7. 对于“密码源”,请保留默认值 session.sso.token.last.password,即 BIG-IP 用于缓存用户密码的 APM 变量

    “新建 SSO 配置”下的“名称”和“使用 SSO 模板”选项的屏幕截图。

  8. 对于“启动 URI”,输入 FBA 应用程序登录 URI。 如果请求 URI 与此 URI 值匹配,则基于 APM 表单的身份验证将执行 SSO。

  9. 对于“表单操作”,请将其留空。 然后,原始请求 URL 将用于 SSO。

  10. 对于“用户名的表单参数”,请输入登录表单用户名字段元素。 使用浏览器开发工具确定元素。

  11. 对于“密码的表单参数”,请输入登录表单用户名字段元素。 使用浏览器开发工具确定元素。

“启动 URI”、“用户名的表单参数”和“密码的表单参数”字段的屏幕截图。

登录页面的屏幕截图,其中包含用户名字段和密码字段的标注。

如果要了解详细信息,请转到 techdocs.f5.com 查看手册章节:单一登录方法

配置访问配置文件

访问配置文件绑定了 APM 元素,包括访问策略、SSO 配置和 UI 设置,这些元素用于管理对 BIG-IP 虚拟服务器的访问权限。

  1. 选择“访问”>“配置文件/策略”。

  2. 选择“访问配置文件(每会话策略)”。

  3. 选择“创建”。

  4. 输入“名称”。

  5. 对于“配置文件类型”,选择“全部”。

  6. 对于“SSO 配置”,选择创建的 FBA SSO 配置对象。

  7. 对于“接受的语言”,选择至少一种语言。

    屏幕截图显示“访问配置文件(每会话策略)”、“新建配置文件”上的选项和选择。

  8. 在“每会话策略”列中,对于配置文件选择“编辑”。

  9. APM 可视化策略编辑器随即启动。

    “每会话策略”列中“编辑”选项的屏幕截图。

  10. 在“回退”下,选择 + 符号。

屏幕截图显示“回退”下的 APM 可视化策略编辑器加号选项。

  1. 在弹出窗口中,选择“身份验证”。
  2. 选择“SAML 身份验证”。
  3. 选择“添加项”。

“SAML 身份验证”选项的屏幕截图。

  1. 在“SAML 身份验证 SP”上,将“名称”更改为“Microsoft Entra 身份验证”
  2. 在“AAA 服务器”下拉列表中,输入创建的 SAML 服务提供方对象。

显示 Microsoft Entra 身份验证服务器设置的屏幕截图。

  1. 在“成功”分支上,选择 + 符号。
  2. 在弹出窗口中,选择“身份验证”。
  3. 选择“登录页”。
  4. 选择“添加项”。

屏幕截图显示“登录”选项卡上的“登录页”选项。

  1. 对于“用户名”,在“只读”列中,选择“”。

屏幕截图显示“属性”选项卡上的“用户名”行中的“是”选项。

  1. 对于登录页面回退,请选择 + 符号。 此操作将添加 SSO 凭证映射对象。

  2. 在弹出窗口中,选择“分配”选项卡。

  3. 选择“SSO 凭证映射”。

  4. 选择“添加项”。

    屏幕截图显示“分配”选项卡上的“SSO 凭证映射”选项。

  5. 在“变量分配: SSO 凭证映射”窗格上,保留默认设置。

  6. 选择“保存”

    屏幕截图显示“属性”选项卡上的“保存”选项。

  7. 在上方的“拒绝”框中,选择链接。

  8. 成功”分支将更改为“允许”。

  9. 选择“保存”

(可选)配置属性映射

可以添加 LogonID_Mapping 配置。 然后,BIG-IP 活动会话列表包含已登录用户 UPN,而不是会话编号。 请使用此信息分析日志或进行故障排除。

  1. 对于“SAML 身份验证成功”分支,选择 + 符号。

  2. 在弹出窗口中,选择“分配”。

  3. 选择“变量分配”。

  4. 选择“添加项”。

    “分配”选项卡上的“变量分配”选项的屏幕截图。

  5. 在“属性”选项卡上,输入名称。 例如 LogonID_Mapping。

  6. 在“变量分配”下,选择“添加新条目”。

  7. 选择“更改”。

    屏幕截图显示“添加新条目”选项和“更改”选项。

  8. 对于“自定义变量”,请使用 session.logon.last.username

  9. 对于“会话变量”,请使用 session.saml.last.identity

  10. 选择“完成”。

  11. 选择“保存”

  12. 选择“添加访问策略”。

  13. 关闭可视化策略编辑器。

屏幕截图显示“应用访问策略”上的访问策略。

配置后端池

为了让 BIG-IP 能够正确地转发客户端流量,请创建一个 BIG-IP 节点对象来表示托管应用程序的后端服务器。 然后,将该节点放入 BIG-IP 服务器池。

  1. 选择“本地流量”>“”。

  2. 选择“池列表”。

  3. 选择“创建”。

  4. 输入服务器池对象的名称。 例如 MyApps_VMs。

    屏幕截图显示“新建池”下的“名称”字段。

  5. 对于“节点名称”,输入服务器显示名称。 此服务器托管后端 Web 应用程序。

  6. 对于“地址”,输入应用程序服务器主机 IP 地址。

  7. 对于“服务器端口”,输入应用程序正在侦听的 HTTP/S 端口。

    屏幕截图显示“节点名称”、“地址”和“服务端口”字段以及“添加”选项。

    注意

    运行状况监视器需要本文未涵盖的配置。 转至 support.f5.com 查看K13397:BIG-IP DNS 系统的 HTTP 运行状况监视器请求格式概述

配置虚拟服务器

虚拟服务器是一个 BIG-IP 数据平面对象,由虚拟 IP 地址表示。 服务器侦听客户端对应用程序的请求。 任何收到的流量都会根据与虚拟服务器关联的 APM 访问配置文件进行处理和评估。 流量会根据策略进行定向。

如果要配置虚拟服务器:

  1. 选择“本地流量”>“虚拟服务器”。

  2. 选择“虚拟服务器列表”。

  3. 选择“创建”。

  4. 输入“名称”。

  5. 对于“目标地址/掩码”,选择“主机”并输入 IPv4 或 IPv6 地址。 该地址接收已发布后端应用程序的客户端流量。

  6. 对于“服务端口”,选择“端口”,输入 443,然后选择“HTTPS”。

    屏幕截图显示“名称”、“目标地址”和“服务端口”字段以及选项。

  7. 对于“HTTP 配置文件(客户端)”,选择“http”。

  8. 对于“SSL 配置文件(客户端)”,选择你创建的配置文件,或者保留默认值以进行测试。 此选项允许用于传输层安全性 (TLS) 的虚拟服务器通过 HTTPS 发布服务。

    “HTTP 配置文件(客户端)”和“SSL 配置文件(客户端)”选项的屏幕截图。

  9. 对于“源地址转换”,选择“自动映射”。

    “源地址转换”的“自动映射”选择的屏幕截图。

  10. 在“访问策略”下的“访问配置文件”框中,输入你创建的名称。 此操作会将 Microsoft Entra SAML 预身份验证配置文件和 FBA SSO 策略绑定到虚拟服务器。

“访问策略”下的“访问配置文件”条目的屏幕截图。

  1. 在“资源”下,对于“默认池”,选择你创建的后端池对象。
  2. 选择“完成”。

“资源”下的“默认池”选项的屏幕截图。

配置会话管理设置

BIG-IP 会话管理设置定义会话终止和继续的条件。 在此区域中创建策略。

  1. 转到“访问策略”。
  2. 选择“访问配置文件”。
  3. 选择“访问配置文件”。
  4. 从列表中选择你的应用程序。

如果在 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 强制执行路径。

测试

  1. 用户连接到应用程序外部 URL,或在“我的应用”中,选择应用程序图标。

  2. 用户对 Microsoft Entra ID 进行身份验证。

  3. 用户重定向到应用程序的 BIG-IP 端点。

  4. 此时会显示密码提示。

  5. APM 使用来自 Microsoft Entra ID 的 UPN 填充用户名。 为确保会话一致性,用户名是只读的。 如果需要,请隐藏此字段。

  6. 将提交该信息。

  7. 用户已登录到应用程序。

    欢迎页的屏幕截图。

疑难解答

进行故障排除时,请考虑以下信息:

  • BIG-IP 在分析 URI 上的登录表单时执行 FBA SSO

    • BIG-IP 从配置中查找用户名和密码元素标记
  • 确认元素标记一致,否则 SSO 会失败

  • 动态生成的复杂表单可能需要开发工具分析来了解登录表单

  • 客户端发起更适合具有多个表单的登录页面

    • 可以选择表单名称并自定义 JavaScript 表单处理程序逻辑
  • FBA SSO 方法通过隐藏窗体交互来优化用户体验和安全性:

    • 可以验证是否注入了凭证
    • 在客户端发起模式下,在 SSO 配置文件中禁用表单自动提交
    • 使用开发工具禁用阻止登录页面显示的两个样式属性

    “属性”页的屏幕截图。

增加日志详细程度

BIG-IP 日志包含用于隔离身份验证和 SSO 问题的信息。 增加日志详细级别:

  1. 转到“访问策略”>“概述”。
  2. 选择“事件日志”。
  3. 选择“设置”。
  4. 选择已发布应用程序所在的行。
  5. 选择“编辑”。
  6. 选择“访问系统日志”。
  7. 在 SSO 列表中,选择“调试”。
  8. 选择“确定”
  9. 重现此问题。
  10. 查看日志。

还原设置,否则数据过多。

BIG-IP 错误消息

如果在 Microsoft Entra 预身份验证后出现 BIG-IP 错误,则问题可能与从 Microsoft Entra ID 到 BIG-IP 的 SSO 有关。

  1. 转到“访问”>“概述”。
  2. 选择“访问报告”。
  3. 运行过去一小时的报告。
  4. 查看日志以获取线索。

使用会话的“查看会话变量”链接来确定 APM 是否接收预期的 Microsoft Entra 声明。

无 BIG-IP 错误消息

如果未显示 BIG-IP 错误消息,则问题可能与后端请求或 BIG-IP 到应用程序的 SSO 有关。

  1. 选择“访问策略”>“概述”。
  2. 选择“活动会话”。
  3. 选择活动会话链接。

使用此位置中的“查看变量”链接也有助于确定根本原因,尤其是在 APM 无法获取正确的用户标识符和密码的情况下。

如果要了解详细信息,请转到 techdocs.f5.com 查看手册章节:会话变量

资源