教程:Microsoft Entra SSO 与 FortiGate SSL VPN 的集成

本教程介绍如何将 FortiGate SSL VPN 与 Microsoft Entra ID 相集成。 将 FortiGate SSL VPN 与 Microsoft Entra ID 集成后,可以:

  • 在 Microsoft Entra ID 中控制谁有权访问 FortiGate SSL VPN。
  • 使用户能够使用其 Microsoft Entra 帐户自动登录到 FortiGate SSL VPN。
  • 在一个中心位置(Azure 门户)管理帐户。

先决条件

若要开始操作,需备齐以下项目:

  • 一个 Microsoft Entra 订阅。 如果没有订阅,可以获取一个免费帐户
  • 启用了单一登录 (SSO) 的 FortiGate SSL VPN。

教程说明

在本教程中,你将在测试环境中配置并测试 Microsoft Entra SSO。

FortiGate SSL VPN 支持 SP 发起的 SSO。

若要配置 FortiGate SSL VPN 与 Microsoft Entra ID 的集成,需要从库中将 FortiGate SSL VPN 添加到托管 SaaS 应用列表:

  1. 至少以云应用程序管理员身份登录到 Microsoft Entra 管理中心
  2. 浏览至“标识”>“应用程序”>“企业应用程序”>“新建应用程序”。
  3. 在“从库中添加”部分的搜索框中,输入“FortiGate SSL VPN” 。
  4. 在结果面板中选择“FortiGate SSL VPN”,然后添加该应用。 在该应用添加到租户时等待几秒钟。

或者,也可以使用企业应用配置向导。 在此向导中,可以将应用程序添加到租户、将用户/组添加到应用、分配角色,以及逐步完成 SSO 配置。 详细了解 Microsoft 365 向导。

配置并测试 FortiGate SSL VPN 的 Microsoft Entra SSO

你将使用名为 B.Simon 的测试用户配置并测试 FortiGate SSL VPN 的 Microsoft Entra SSO。 若要使 SSO 生效,需要在 Microsoft Entra 用户与 FortiGate SSL VPN 中的相应 SAML SSO 用户组之间建立链接关系。

若要配置并测试 FortiGate SSL VPN 的 Microsoft Entra SSO,请执行以下概要步骤:

  1. 配置 Microsoft Entra SSO,使用户能够使用此功能。
    1. 创建 Microsoft Entra 测试用户,以测试 Microsoft Entra 单一登录。
    2. 向测试用户授予访问权限 - 使该用户能够使用 Microsoft Entra 单一登录。
  2. 在应用程序端上配置 FortiGate SSL VPN SSO
    1. 创建对应于该用户的 Microsoft Entra 表示形式的 FortiGate SAML SSO 用户组。
  3. 测试 SSO ,验证配置是否正常工作。

配置 Microsoft Entra SSO

在 Azure 门户中执行以下步骤来启用 Microsoft Entra SSO:

  1. 至少以云应用程序管理员身份登录到 Microsoft Entra 管理中心

  2. 依次浏览到“标识”>“应用程序”>“企业应用程序”>“FortiGate SSL VPN”应用程序集成页,在“管理”部分选择“单一登录”。

  3. 在“选择单一登录方法”页上选择“SAML” 。

  4. 在“设置 SAML 单一登录”页上,选择“基本 SAML 配置”对应的“编辑”按钮以编辑设置:

    Screenshot of showing Basic SAML configuration page.

  5. 在“设置 SAML 单一登录”页面上,输入以下值:

    a. 在“标识符”框中,输入采用 https://<FortiGate IP or FQDN address>:<Custom SSL VPN port>/remote/saml/metadata 模式的 URL。

    b. 在“回复 URL”框中,输入采用 https://<FortiGate IP or FQDN address>:<Custom SSL VPN port>/remote/saml/login 模式的 URL。

    c. 在“登录 URL”框中,输入采用 https://<FortiGate IP or FQDN address>:<Custom SSL VPN port>/remote/saml/login 模式的 URL。

    d. 在“注销 URL”框中,输入采用 https://<FortiGate IP or FQDN address>:<Custom SSL VPN port><FQDN>/remote/saml/logout 模式的 URL。

    注意

    这些值只是模式。 你需要使用实际的登录 URL、标识符、回复 URL 和注销 URL(在 FortiGate 上配置)。

  6. FortiGate SSL VPN 应用程序需要特定格式的 SAML 断言,这要求向配置添加自定义属性映射。 以下屏幕截图显示了默认属性的列表。

    Screenshot of showing Attributes and Claims section.

  7. 下表显示了 FortiGate SSL VPN 所需的声明。 这些声明的名称必须与本教程的“执行 FortiGate 命令行配置”部分中使用的名称相匹配。 名称区分大小写。

    名称 源属性
    username user.userprincipalname
    group user.groups

    若要创建这些附加声明,请执行以下操作:

    a. 在“用户属性和声明”旁边,选择“编辑”

    b. 选择“添加新声明”。

    c. 对于“名称”,请输入“username”。

    d. 对于“源属性”,请选择“user.userprincipalname”。

    e. 选择“保存”。

    注意

    “用户属性和声明”仅允许一个组声明。 若要添加组声明,请删除声明中已存在的现有组声明 user.groups [SecurityGroup] 以添加新声明,或者将现有组声明编辑为“所有组”。

    f. 选择“添加组声明”。

    g. 选择“所有组”。

    h. 在“高级选项”下,选中“自定义组声明的名称”复选框。

    i. 对于“名称”,请输入“group”。

    j. 选择“保存”。

  8. 在“设置 SAML 单一登录”页面上的“SAML 签名证书”部分,选择“证书(Base64)”旁边的“下载”链接,下载证书并将其保存到计算机上:

    Screenshot that shows the certificate download link.

  9. 在“设置 FortiGate SSL VPN”部分中,根据要求复制相应的 URL:

    Screenshot that shows the configuration URLs.

创建 Microsoft Entra 测试用户

在本部分,你将创建名为 B.Simon 的测试用户。

  1. 至少以用户管理员身份登录到 Microsoft Entra 管理中心
  2. 浏览到“标识”>“用户”>“所有用户”。
  3. 选择屏幕顶部的“新建用户”>“创建新用户”。
  4. 在“用户”属性中执行以下步骤
    1. 在“显示名称”字段中输入 B.Simon
    2. 在“用户主体名称”字段中,输入 username@companydomain.extension。 例如 B.Simon@contoso.com
    3. 选中“显示密码”复选框,然后记下“密码”框中显示的值。
    4. 选择“查看 + 创建”。
  5. 选择“创建”。

向测试用户授予访问权限

在本部分,你将授予 B.Simon 访问 FortiGate SSL VPN 的权限,使其能够使用单一登录。

  1. 浏览到“标识”>“应用程序”>“企业应用程序”。
  2. 在应用程序列表中,选择“FortiGate SSL VPN”。
  3. 在应用概述页上的“管理”部分,选择“用户和组” 。
  4. 选择“添加用户”,然后在“添加分配”对话框中选择“用户和组”。
  5. 在“用户和组”对话框中的“用户”列表内选择“B.Simon”,然后单击屏幕底部的“选择”按钮。
  6. 如果希望在 SAML 断言中使用任何角色值,请在“选择角色”对话框中,从列表中为用户选择相应的角色。 单击屏幕底部的“选择”按钮 。
  7. 在“添加分配”对话框中选择“分配”。

为测试用户创建安全组

在本部分,你将在 Microsoft Entra ID 中为测试用户创建安全组。 FortiGate 将使用此安全组通过 VPN 来授予用户网络访问权限。

  1. 在 Microsoft Entra 管理中心,导航到 “标识”>“组”>“新建组”。
  2. 在“新建组”属性中,完成以下步骤
    1. 在“组类型”列表中,选择“安全性”。
    2. 在“组名”框中,输入“FortiGateAccess” 。
    3. 在“组说明”框中,输入“授予 FortiGate VPN 访问权限的组” 。
    4. 对于“Microsoft Entra 角色可以分配到组(预览版)”设置,请选择“否”。
    5. 在“成员身份类型”框中,选择“已分配” 。
    6. 在“成员”下,选择“未选择任何成员”。
    7. 在“用户和组”对话框中,从“用户”列表中选择“B.Simon”,然后单击屏幕底部的“选择”按钮 。
    8. 选择创建
  3. 返回到 Microsoft Entra ID 中的“组”部分后,找到“FortiGate 访问权限”组并记下“对象 ID”。稍后需要用到此信息。

配置 FortiGate SSL VPN SSO

将 Base64 SAML 证书上传到 FortiGate 设备

在租户中完成 FortiGate 应用的 SAML 配置后,你下载了 Base64 编码的 SAML 证书。 需要将此证书上传到 FortiGate 设备:

  1. 登录到 FortiGate 设备的管理门户。
  2. 在左窗格中,选择“系统”。
  3. 在“系统”下,选择“证书” 。
  4. 选择“导入”>“远程证书” 。
  5. 浏览到从 Azure 租户中的 FortiGate 应用部署下载的证书,将其选中,然后选择“确定”。

证书上传后,请记下其在“系统”>“证书”>“远程证书”下的名称 。 默认情况下,它将命名为 REMOTE_Cert_N,其中 N 是一个整数值 。

完成 FortiGate 命令行配置

尽管自 FortiOS 7.0 以后可以从 GUI 配置 SSO,但 CLI 配置适用于所有版本,因此在此处显示。

若要完成这些步骤,需要使用之前记录的值:

FortiGate SAML CLI 设置 等效的 Azure 配置
SP 实体 ID (entity-id) 标识符(实体 ID)
SP 单一登录 URL (single-sign-on-url) 回复 URL(断言使用者服务 URL)
SP 单一注销 URL (single-logout-url) 注销 URL
IdP 实体 ID (idp-entity-id) Microsoft Entra 标识符
IdP 单一登录 URL (idp-single-sign-on-url) Azure 登录 URL
IdP 单一注销 URL (idp-single-logout-url) Azure 注销 URL
IdP 证书 (idp-cert) Base64 SAML 证书名称 (REMOTE_Cert_N)
用户名属性 (user-name) username
组名称属性 (group-name) group

注意

FortiGate 配置中不使用“基本 SAML 配置”下的登录 URL。 它用于触发 SP 发起的单一登录,以将用户重定向到 SSL VPN 门户页。

  1. 与 FortiGate 设备建立 SSH 会话,并使用 FortiGate 管理员帐户登录。

  2. 运行以下命令,并使用 <values> 来替换前面收集的信息:

    config user saml
      edit azure
        set cert <FortiGate VPN Server Certificate Name>
        set entity-id < Identifier (Entity ID)Entity ID>
        set single-sign-on-url < Reply URL Reply URL>
        set single-logout-url <Logout URL>
        set idp-entity-id <Azure AD Identifier>
        set idp-single-sign-on-url <Azure Login URL>
        set idp-single-logout-url <Azure Logout URL>
        set idp-cert <Base64 SAML Certificate Name>
        set user-name username
        set group-name group
      next
    end
    

配置 FortiGate 以进行组匹配

在本部分中,你将配置 FortiGate 以识别包含测试用户的安全组的对象 ID。 此配置将使 FortiGate 能够基于组的成员身份作出访问决策。

若要完成这些步骤,需要使用之前在本教程中创建的 FortiGateAccess 安全组的对象 ID。

  1. 与 FortiGate 设备建立 SSH 会话,并使用 FortiGate 管理员帐户登录。

  2. 运行以下命令:

    config user group
      edit FortiGateAccess
        set member azure
        config match
          edit 1
            set server-name azure
            set group-name <Object Id>
          next
        end
      next
    end
    

创建 FortiGate VPN 门户和防火墙策略

在本部分中,你将配置 FortiGate VPN 门户和防火墙策略,以授予对之前在本教程中创建的 FortiGateAccess 安全组的访问权限。

有关说明,请参阅使用 Microsoft Entra ID 作为 SAML IdP 为 SSL VPN 配置 SAML SSO 登录名

测试 SSO

在本部分,你将使用以下选项测试 Microsoft Entra 单一登录配置。

  • 在 Azure SSO 配置的步骤 5) 中,*若要使用应用测试单一登录,请单击“测试”按钮。 这会重定向到 FortiGate VPN 登录 URL,可在其中启动登录流。

  • 直接转到 FortiGate VPN 登录 URL,并从那里启动登录流。

  • 你可使用 Microsoft 的“我的应用”。 在“我的应用”中单击 FortiGate VPN 磁贴时,将会重定向到 FortiGate 登录 URL。 有关“我的应用”的详细信息,请参阅“我的应用”简介

后续步骤

配置 FortiGate VPN 后,可以强制实施会话控制,实时防止组织的敏感数据外泄和渗透。 会话控制从条件访问扩展而来。 了解如何通过 Microsoft Defender for Cloud Apps 强制实施会话控制