概念验证指南:使用本机 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

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

  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. 在为通过表达式构建器构建的表达式 OR 的HTTP.REQ.COOKIE.VALUE(“NSC_TASS”).EQ(“manageotp”)中粘贴本机 OTP可以选择通过添加源 IP 地址条件(例如),将注册限制在内部网络中的终端节点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. 选择Done本机 OTP

本机 OTPAAA虚拟服务器

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

网关虚拟服务器

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

  1. 导航到Citrix Gateway > Virtual Servers
  2. 选择您当前的网关,然后单击Edit
  3. 从右侧的高级设置面板中选择身份验证配置文件
  4. 选择Add
  5. 输入配置文件名称。我们输入nativeotp_authprofile
  6. 在策略下选择箭头,然后选择本机 OTPAAA虚拟服务器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 应用程序或其他身份验证器应用程序,例如微软或谷歌(可从应用商店下载)
  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 实施和使用案例的更多详细信息。

概念验证指南:使用本机 OTP 身份验证的 Citrix Gateway 的 nFactor