PoC 指南:使用本机 OTP 进行 Citrix Gateway 身份验证的 nFactor

简介

实施多因素身份验证是验证身份和改善安全状况的最佳方法之一。本机(基于时间的)一次性密码 (OTP) 是使用现成可用的身份验证器应用程序实现另一个因素的便捷方法。它允许用户将身份验证器应用程序中的验证码输入到网关表单中进行身份验证。

Citrix Gateway 支持本机 OTP,可以为各种服务(包括 Web 服务、VPN 和 Citrix Virtual Apps and Desktops )提供身份验证。在本 POC 指南中,我们演示了在 Citrix Virtual Apps and Desktops 环境中使用它进行身份验证。

概念体系结构

本地 OTP 注册

本机 OTP 身份验证

概述

本指南演示了如何使用 Citrix Gateway 的双重身份验证来实现概念验证环境。它使用 LDAP 验证 Active Directory 凭据作为第一个因素,第二个因素是本地 OTP。

它对已完成的安装以及以下组件的配置进行假设:

  • Citrix Gateway 安装、许可并配置了绑定到通配符证书的外部可访问虚拟服务器
  • Citrix Gateway 与使用 LDAP 进行身份验证的 Citrix Virtual Apps and Desktops 环境集成
  • 安装了 Citrix Workspace 应用程序
  • 支持基于时间的 OTP 的受支持身份验证器应用程序(包括 Microsoft Authenticator、Google Authenticator 或 Citrix SSO)
  • Active Directory (AD) 在环境中可用

有关最新产品版本和许可证要求,请参阅 Citrix 文档: 本机 OTP 身份验证

nFactor

LDAP 政策

首先,我们创建两个 LDAP 策略,我们稍后在构建 nFactor 流时引用这两个策略。

本地 OTP 注册

此 LDAP 注册策略用于交换和存储用于生成基于时间的 OTP 代码的密钥。

  1. 登录 Citrix ADC UI
  2. 导航到 安全 > AAA-应用程序流量 > 策略 > 身份验证 > 高级策略 > 策略
  3. 单击 Add
  4. 输入 polldap_notpmanage 策略名称,然后将操作类型更改为 LDAP
  5. 单击“操作”下的“Add
  6. 填充以下字段:
    • 名称 - 输入 actldap_notpmanage
    • 服务器名称/IP 地址-为 AD 服务器选择 FQDN 或 IP 地址。我们输入 192.0.2.50
    • 清除 Authentication 此设置以及下面的 OTP Secret 表示策略将设置而不是获取对象属性
    • 基本 DN-输入 AD 用户容器的路径。我们输入 DC=workspaces, DC=wwco, DC=net
    • 管理员绑定 DN-输入管理员/服务帐户以查询 AD 以验证用户身份。我们输入 workspacessrv@workspaces.wwco.net
    • 确认/管理员密码-输入/确认管理员/服务帐号密码
    • 单击测试网络连接以确保连接
    • 服务器登录名称属性-在此字段下方的第二个字段中输入 userPrincipalName
    • OTP Secret-输入 userParameters 这是用户的 LDAP 对象,它将使用与哈希一起使用的密钥进行更新,以生成基于时间的 OTP 代码
  7. 选择创建 本机 OTP
  8. 输入表达式 true,然后单击 OK 本机 OTP

本机 OTP 身份验证

此 LDAP 身份验证策略用于执行第一个因素身份验证。

  1. 导航到 Security > AAA-Application Traffic > Policies > Authentication > Advanced Policies > Policy
  2. 单击 Add
  3. 输入 polldap_notpauth 策略名称,然后将操作类型更改为 LDAP
  4. 单击“操作”下的“Add
  5. 填充以下字段:
    • 名称 - 输入 actldap_notpauth
    • 服务器名称/IP 地址-为 AD 服务器选择 FQDN 或 IP 地址。我们输入 192.0.2.50
    • 基本 DN-输入 AD 用户容器的路径。我们输入 DC=workspaces, DC=wwco, DC=net
    • 管理员绑定 DN-输入管理员/服务帐户以查询 AD 以验证用户身份。我们输入 workspacessrv@workspaces.wwco.net
    • 确认/管理员密码-输入/确认管理员/服务帐号密码
    • 单击测试网络连接以确保连接
    • 服务器登录名称属性-在此字段下方的第二个字段中输入 userPrincipalName
  6. 选择创建 本机 OTP
  7. 输入表达式 true,然后单击 OK 本机 OTP

有关详细信息,请参阅 LDAP 身份验证策略

登录模式

当需要代表策略收集数据时,将使用登录架构。

本机 OTP lSchema-单一身份验证

此注册登录模式与 LDAP 注册策略相对应。

  1. 导航到 Security > AAA-Application Traffic > Login Schema
  2. 选择“Profile”选项卡
  3. 单击“配置文件”下的“Add”,然后将其命名为 prolschema_notpsingle
  4. 点击 noschema 旁边的铅笔图标
  5. 单击 Login Schema,然后向下滚动以选择 SingleAuthManageOTP.xml,然后选择右上角的蓝色 Select
  6. 点击 Create 原生 OTP

本机 OTP lSchema-双重身份验证

此注册登录模式对应于双重身份验证,用户输入密码和 OTP 密码。

  1. 在“Profile”选项卡下,再次单击“Add
  2. 输入名称 pollschema_notpdual
  3. 单击“配置文件”下的“Add”,然后将其命名为 prolschema_notpdual
  4. 点击 noschema 旁边的铅笔图标
  5. 单击 Login Schema,然后向下滚动以选择 DualAuth.xml,然后选择右上角的蓝色 Select
  6. 单击 More
  7. Password Credential Index字段中输入 1
  8. 点击 Create 原生 OTP

本机 OTP AAA 虚拟服务器-可视化工具流

  1. 下一步导航到 Security > AAA - Application Traffic > nFactor Visualizer > nFactor Flows
  2. 单击 Add
  3. 单击 + 符号以创建初始因子。此因素不会采取行动,而是处理将传入流量定向到注册或身份验证因子流。
  4. 输入 factor0-notp,然后单击 Create 本机 OTP

注册流程

  1. 选择 Add Policy
  2. 选择 Select Policy 旁边的 Add
  3. 输入名称 polfactor0-notpmanage
  4. Action Type 设置为 NO_AUTHN
  5. 粘贴表达式或使用表达式生成器 原生 OTP 构建表达式您可以选择通过添加源 IP 地址条件将注册限制在内部网络上的端点,例如 HTTP.REQ.COOKIE.VALUE(“NSC_TASS”).EQ(“manageotp”) http.req.cookie.value("NSC_TASS").eq("manageotp") && client.IP.SRC.IN_SUBNET(10.0.0.0/8)
  6. 单击 Create,然后单击 Add 本机 OTP
  7. 选择刚创建的 polfactor0-notpmanage 策略右侧的绿色 +
  8. 输入 factor1-notpmanage,然后单击 Create 本机 OTP
  9. 在新系数框中,选择 Add Schema
  10. 选择 prolschema_notpsingle,然后单击 Ok
  11. 选择 Add Policy
  12. Select Policy 下的下拉列表中选择 polldap_notpauth,然后单击 Add
  13. 选择 polldap_notpauth 策略右侧的绿色 +
  14. 输入 factor2-notpmanage,然后单击 Create 本机 OTP
  15. 在新系数框中,选择 Add Policy
  16. Select Policy“选择”下的下拉列表中 polldap_notpmanage,单击“Add 本机 OTP

认证流程

  1. 现在在我们创建的初始因子框 factor0-notp 中,选择蓝色 +
  2. 选择 Select Policy 旁边的 Add
  3. 输入名称 polfactor0-notpauth
  4. Action Type 设置为 NO_AUTHN
  5. 为表达式输入 true
  6. 单击 Create,然后单击 Add 注意策略优先级已提高到 110,这意味着只有在上述策略 polfactor0-notpmanage 的状态为 100 不是匹配项时,才会执行策略优先级。 本机 OTP
  7. 选择刚创建的 polfactor0-notpauth 策略右侧的绿色 +
  8. 输入 factor1-notpauth,然后单击 Create
  9. 在新系数框中,选择 Add Schema
  10. 选择 prolschema_notpdual,然后单击 Ok
  11. 选择 Add Policy
  12. Select Policy 下的下拉列表中选择 polldap_notpauth,然后单击 Add
  13. 选择刚创建的 polldap_notpauth 策略右侧的绿色 +
  14. 输入 OTPCheck,然后单击 Create
  15. 选择 Add Policy
  16. Select Policy 下的下拉列表中选择 polldap_notpmanage,然后单击 Add
  17. 选择 Done 本机 OTP

本机 OTP AAA 虚拟服务器

AAA 虚拟服务器是策略和架构以适当的优先级绑定的地方。

  1. 导航到 流量管理 > SSL> 证书 > 所有证书 以验证您是否安装了域证书。在此 POC 示例中,我们使用了与 Active Directory 域对应的通配符证书。 有关更多信息,请参阅 Citrix ADC SSL 证书
  2. 接下来导航到 Security > AAA - Application Traffic > Virtual Servers,然后选择添加
  3. 输入以下字段:
    • 名称-唯一值。我们输入 nativeotp_authvserver
    • IP 地址类型- Non Addressable
  4. 单击 Ok
  5. 选择无服务器证书,选择下方的箭头 Select Server Certificate,选择域证书,单击选择、绑定和继续
  6. Advanced Authentication Policies 下,选择 No Nfactor Flow
  7. 选择 Select nFactor Flow 下的右箭头,选择 factor0_notp,单击 Select,然后单击Bind 本机 OTP
  8. 单击 Continue,然后单击 Done 本机 OTP

流量策略

现在,我们创建了一个流量策略来将 LDAP 密码中继到 StoreFront,而不是 OTP 密码。

  1. 导航到 Citrix Gateway > 虚拟服务器 > 策略 > 流量
  2. 选择Traffic Profiles选项卡,然后单击添加
  3. 输入名称 notp_trafficprofile
  4. 选择 HTTP
  5. 在 SSO 密码表达式中输入 http.REQ.USER.ATTRIBUTE(1)
  6. 点击创建 本机 OTP
  7. 现在点击流量策略选项卡
  8. 在“请求配置文件”字段中,选择刚创建的 notp_trafficprofile 流量配置文件。
  9. 输入名称 nOTP_TrafficPolicy
  10. 在快递框中输入 true
  11. 点击 Create 原生 OTP

网关虚拟服务器

网关虚拟服务器绑定到本机 OTP AAA 虚拟服务器以提供 Citrix Virtual Apps and Desktops 的身份验证。

  1. 导航到 Citrix Gateway > Virtual Servers
  2. 选择您当前的网关,然后单击 Edit
  3. 从右侧的高级设置面板中选择身份验证配置文件
  4. 选择 Add
  5. 输入配置文件名称。我们输入 nativeotp_authprofile
  6. 在策略下选择箭头,然后选择本机 OTP AAA 虚拟服务器 nativeotp_authvserver
  7. 单击 Create
  8. 从右侧的高级设置面板中选择策略
  9. 选择要添加的 + 标志
  10. Choose Policy 下选择 Traffic,然后在 Choose Type 下选择 Request。选择 Continue
  11. 单击向右箭头,选择 notp_trafficpolicy,然后选择 OK
  12. 单击 Done,然后保存运行配置 本地 OTP

用户端点

现在我们通过对 Citrix Virtual Apps and Desktops 环境进行身份验证来测试本机 OTP。

使用 Citrix SSO 应用程序注册

首先,用户使用 Citrix SSO 应用程序将其设备注册为本机 OTP。

  1. 打开浏览器,然后导航到由 Citrix Gateway 管理的域 FQDN,并在 FQDN 末尾附加 /manageotp。我们使用 https://gateway.workspaces.wwco.net/manageotp
  2. 将浏览器重定向到登录屏幕后,输入用户 UPN 和密码 本机 OTP 注册
  3. 在下一个屏幕上选择添加设备,输入名称。我们使用iPhone7_nOTP 本机 OTP 注册
  4. 选择 Go,然后会出现二维码 本机 OTP 注册
  5. 在您的移动设备上打开 Citrix SSO 应用程序或其他身份验证器应用程序,例如Microsoft 或 Google(可从应用商店下载)
  6. 选择添加新令牌
  7. 选择扫描二维码 本机 OTP 注册
  8. 选择“将相机对准二维码”,捕获后选择“添加 本机 OTP 注册
  9. 选择“保存”以存储令牌 本机 OTP 注册
  10. 令牌现在处于活动状态,每隔 30 秒开始显示 OTP 代码 本机 OTP 注册
  11. 选择完成,您会看到设备已成功添加 本机 OTP 注册的确认

Citrix Virtual Apps and Desktops 身份验证、发布和启动

然后,用户从 Citrix SSO 应用程序输入其 UserPrincipalName、密码和 OTP 密码以访问其虚拟应用程序和桌面。

  1. 打开浏览器,然后导航到 Citrix Gateway 管理的域 FQDN。我们使用 https://gateway.workspaces.wwco.net
  2. 将浏览器重定向到登录屏幕后,输入用户 UserPrincipalName 和密码
  3. 打开 Citrix SSO 应用程序,在 iPhone7_nOTP 设备条目 本机 OTP 注册的密码字段中输入 OTP代码
  4. 验证用户的虚拟应用程序和桌面是否已枚举,并在登录 本机 OTP 注册后启动

故障排除

下面我们将看看本地 OTP 的几个常见故障排除区域。

NTP 错误

使用 OTP 代码登录后,页面可能会发布一条消息,提示您验证 NTP 同步。Citrix ADC 的时间必须同步才能生成正确的基于时间的 OTP。如果您尚未实施 NTP,请按照以下步骤操作:

认证错误

  • Cannot complete your request. -如果此错误消息在身份验证成功后出现,则可能表示将用户凭据传递给 StoreFront 时出错验证双重身份验证模式和流量策略设置。 本机 OTP
  • Try again or contact your help desk -此错误消息通常表示 LDAP 登录失败。 本机 OTP 如果您已验证密码是否正确,请验证是否已设置管理员绑定密码。您可能已经拥有现有 LDAP 身份验证策略,并通过选择管理策略,然后选择添加来创建管理策略。此步骤通过填充现有设置(如Base DN)来节省时间,您可能会看到“管理员密码”字段似乎已填充,但您必须重新输入密码。 本机 OTP

摘要

借助 Citrix Workspace 和 Citrix Gateway,企业可以通过实施多因素身份验证来改善其安全状况,而不会使用户体验复杂。用户可以通过输入域用户名和密码来获得对 Citrix Virtual Apps and Desktops 的访问权限,然后通过从注册的身份验证器应用程序中输入一次性密码来确认自己的身份。

引用

有关更多信息,请参阅:

本机 OTP 身份验证 — 查找有关本机 OTP 实施和用例的更多详细信息。

PoC 指南:使用本机 OTP 进行 Citrix Gateway 身份验证的 nFactor