概念验证指南:使用本机 OTP 身份验证的 Citrix Gateway 的 nFactor
简介
实施多因素身份验证是验证身份和改善安全状况的最佳方法之一。本机(基于时间的)一次性密码 (OTP) 是使用现成可用的身份验证器应用程序实现另一个因素的便捷方法。它允许用户将身份验证器应用程序中的验证码输入到网关表单中进行身份验证。
Citrix Gateway 支持本机 OTP,可以为各种服务(包括 Web 服务、VPN 和 Citrix Virtual Apps and Desktops )提供身份验证。在本 POC 指南中,我们演示了在 Citrix Virtual Apps and Desktops 环境中使用它进行身份验证。
概念体系结构
概述
本指南演示了如何使用 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 代码的密钥。
- 登录 Citrix ADC UI
- 导航到安全 > AAA-应用程序流量 > 策略 > 身份验证 > 高级策略 > 策略
- 单击
Add
- 输入
polldap_notpmanage
策略名称,然后将操作类型更改为LDAP
。 - 单击“操作”下的“
Add
” - 填充以下字段:
- 名称 - 输入
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 代码
- 名称 - 输入
- 选择创建
- 输入表达式
true
,然后单击OK
本机 OTP 身份验证
此 LDAP 身份验证策略用于执行第一个因素身份验证。
- 导航到
Security > AAA-Application Traffic > Policies > Authentication > Advanced Policies > Policy
- 单击
Add
- 输入
polldap_notpauth
策略名称,然后将操作类型更改为LDAP
。 - 单击“操作”下的“
Add
” - 填充以下字段:
- 名称 - 输入
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
- 名称 - 输入
- 选择创建
- 输入表达式
true
,然后单击OK
有关更多信息,请参阅LDAP 身份验证策略
登录模式
当需要代表策略收集数据时,将使用登录架构。
本机 OTP lSchema-单一身份验证
此注册登录模式与 LDAP 注册策略相对应。
- 导航到
Security > AAA-Application Traffic > Login Schema
- 选择“
Profile
”选项卡 - 单击“配置文件”下的“
Add
”,然后将其命名为prolschema_notpsingle
- 点击
noschema
旁边的铅笔图标 - 单击
Login Schema
,然后向下滚动以选择SingleAuthManageOTP.xml
,然后选择右上角的蓝色Select
。 - 单击
Create
本机 OTP lSchema-双重身份验证
此注册登录模式对应于双重身份验证,用户输入密码和 OTP 密码。
- 在“
Profile
”选项卡下,再次单击“Add
” - 输入名称
pollschema_notpdual
- 单击“配置文件”下的“
Add
”,然后将其命名为prolschema_notpdual
- 点击
noschema
旁边的铅笔图标 - 单击
Login Schema
,然后向下滚动以选择DualAuth.xml
,然后选择右上角的蓝色Select
。 - 单击
More
- 在
Password Credential Index
字段中输入1
- 单击
Create
AAA
虚拟服务器-可视化工具流
本机 OTP- 下一步导航到
Security > AAA - Application Traffic > nFactor Visualizer > nFactor Flows
- 单击
Add
- 单击
+
符号以创建初始因子。此因素不会采取行动,而是处理将传入流量定向到注册或身份验证因子流。 - 输入
factor0-notp
,然后单击Create
注册流程
- 选择
Add Policy
- 选择
Select Policy
旁边的Add
- 输入名称
polfactor0-notpmanage
- 将
Action Type
设置为NO_AUTHN
- 在为通过表达式构建器构建的表达式 OR 的
HTTP.REQ.COOKIE.VALUE(“NSC_TASS”).EQ(“manageotp”)
中粘贴可以选择通过添加源 IP 地址条件(例如),将注册限制在内部网络中的终端节点
http.req.cookie.value("NSC_TASS").eq("manageotp") && client.IP.SRC.IN_SUBNET(10.0.0.0/8)
。 - 点击
Create
,然后单击Add
- 选择刚创建的
polfactor0-notpmanage
策略右侧的绿色+
- 输入
factor1-notpmanage
,然后单击Create
- 在新系数框中,选择
Add Schema
- 选择
prolschema_notpsingle
,然后单击Ok
- 选择
Add Policy
- 从“
Select Policy
”下的下拉列表中选择polldap_notpauth
,然后单击“Add
” - 选择
polldap_notpauth
策略右侧的绿色+
- 输入
factor2-notpmanage
,然后单击Create
- 在新系数框中,选择
Add Policy
- 从
Select Policy
下的下拉列表中选择polldap_notpmanage
,然后单击Add
认证流程
- 现在在我们创建的初始因子框
factor0-notp
中,选择蓝色+
- 选择
Select Policy
旁边的Add
- 输入名称
polfactor0-notpauth
- 将
Action Type
设置为 NO_AUTHN - 为表达式输入
true
- 单击
Create
,然后单击Add
注意策略优先级已提高到 110,这意味着只有在上述策略polfactor0-notpmanage
的状态为 100 不是匹配项时,才会执行策略优先级。 - 选择刚创建的
polfactor0-notpauth
策略右侧的绿色+
- 输入
factor1-notpauth
,然后单击Create
- 在新系数框中,选择
Add Schema
- 选择
prolschema_notpdual
,然后单击Ok
- 选择
Add Policy
- 从“
Select Policy
”下的下拉列表中选择polldap_notpauth
,然后单击“Add
” - 选择
Done
AAA
虚拟服务器
本机 OTP此AAA
虚拟服务器是策略和架构以适当的优先级绑定的地方。
- 导航到流量管理 > SSL> 证书 > 所有证书以验证您是否安装了域证书。在此 POC 示例中,我们使用了与 Active Directory 域对应的通配符证书。 有关更多信息,请参阅Citrix ADC SSL 证书。
- 接下来导航到
Security > AAA - Application Traffic > Virtual Servers
,然后选择添加 - 输入以下字段:
- 名称-唯一值。我们输入
nativeotp_authvserver
- IP 地址类型-
Non Addressable
- 名称-唯一值。我们输入
- 单击
Ok
- 选择无服务器证书,选择下方的箭头
Select Server Certificate
,选择域证书,单击选择、绑定和继续 - 在
Advanced Authentication Policies
下,选择No Nfactor Flow
- 选择下方的右箭头
Select nFactor Flow
,选择factor0_notp
,单击Select
,单击Bind
- 点击
Continue
,然后单击Done
流量策略
现在,我们创建了一个流量策略来将 LDAP 密码中继到 StoreFront,而不是 OTP 密码。
- 导航到Citrix Gateway > 虚拟服务器 > 策略 > 流量
- 选择
Traffic Profiles
选项卡,然后单击添加 - 输入名称
notp_trafficprofile
- 选择
HTTP
- 在 SSO 密码表达式中输入
http.REQ.USER.ATTRIBUTE(1)
- 点击创建
- 现在点击流量策略选项卡
- 在 “请求配置文件” 字段中,选择刚创建的
notp_trafficprofile
流量配置文件。 - 输入名称
nOTP_TrafficPolicy
- 在快递框中输入
true
- 单击
Create
网关虚拟服务器
网关虚拟服务器绑定到本机 OTPAAA
虚拟服务器以提供 Citrix Virtual Apps and Desktops 的身份验证。
- 导航到
Citrix Gateway > Virtual Servers
- 选择您当前的网关,然后单击
Edit
- 从右侧的高级设置面板中选择身份验证配置文件
- 选择
Add
- 输入配置文件名称。我们输入
nativeotp_authprofile
- 在策略下选择箭头,然后选择本机 OTP
AAA
虚拟服务器nativeotp_authvserver
- 单击
Create
- 从右侧的高级设置面板中选择策略
- 选择要添加的
+
标志 - 在
Choose Policy
下选择Traffic
,然后在Choose Type
下选择Request
。选择Continue
- 单击向右箭头,选择
notp_trafficpolicy
,然后选择OK
- 单击
Done
,然后保存运行配置
用户端点
现在我们通过对 Citrix Virtual Apps and Desktops 环境进行身份验证来测试本机 OTP。
使用 Citrix SSO 应用程序注册
首先,用户使用 Citrix SSO 应用程序将其设备注册为本机 OTP。
- 打开浏览器,然后导航到由 Citrix Gateway 管理的域 FQDN,并在 FQDN 末尾附加
/manageotp
。我们使用https://gateway.workspaces.wwco.net/manageotp
- 将浏览器重定向到登录屏幕后,请输入用户 UPN 和密码
- 在下一个屏幕上选择添加设备,输入名称。我们使用
iPhone7_nOTP
- 选择 Go,然后出现二维码
- 在你的移动设备上打开 Citrix SSO 应用程序或其他身份验证器应用程序,例如微软或谷歌(可从应用商店下载)
- 选择添加新令牌
- 选择扫描二维码
- 选择将相机瞄准二维码,然后选择添加
- 选择保存以存储令牌
- 令牌现在处于活动状态,并开始每隔 30 秒显示 OTP 代码
- 选择 “完成”,您会看到设备已成功添加的确认
Citrix Virtual Apps and Desktops 身份验证、发布和启动
然后,用户从 Citrix SSO 应用程序输入其 UserPrincipalName、密码和 OTP 密码以访问其虚拟应用程序和桌面。
- 打开浏览器,然后导航到Citrix Gateway 管理的域 FQDN。我们使用
https://gateway.workspaces.wwco.net
- 将浏览器重定向到登录屏幕后,输入用户 userPrincipalName 和密码
- 打开 Citrix SSO 应用程序在
iPhone7_nOTP
设备条目的密码字段中输入 OTP 代码 - 验证用户虚拟应用程序和桌面是否已枚举,并在登录后启动
故障排除
下面我们将看看本地 OTP 的几个常见故障排除区域。
NTP 错误
使用 OTP 代码登录后,页面可能会发布一条消息,提示您验证 NTP 同步。Citrix ADC 的时间必须同步才能生成正确的基于时间的 OTP。如果您尚未实施 NTP,请按照以下步骤操作:
- 在 Citrix ADC 上手动设置时间到目前的时候。这将加快同步,否则将需要更长时间的同步
- 添加 NTP 服务器
- 如果您在提交 OTP 代码时仍然收到 NTP 错误,请参阅NetScaler 上的时间显示不使用 NTP 同步
认证错误
Cannot complete your request.
-如果此错误消息在身份验证成功后出现,则可能表示将用户凭据传递给 StoreFront 时出错验证双重身份验证模式和流量策略设置。Try again or contact your help desk
-此错误消息通常表示 LDAP 登录失败。如果验证密码是否正确,请验证是否已设置管理员绑定密码。您可能已经拥有现有 LDAP 身份验证策略,并通过选择管理策略,然后选择添加来创建管理策略。此步骤通过填充现有设置(如
Base DN
)来节省时间,您可能会看到 “管理员密码” 字段似乎已填充,但您必须重新输入密码。
摘要
借助 Citrix Workspace 和 Citrix Gateway,企业可以通过实施多因素身份验证来改善其安全状况,而不会使用户体验复杂。用户可以通过输入域用户名和密码来获得对 Citrix Virtual Apps and Desktops 的访问权限,然后通过从注册的身份验证器应用程序中输入一次性密码来确认自己的身份。
引用
有关更多信息,请参阅:
本机 OTP 身份验证— 了解有关本机 OTP 实施和使用案例的更多详细信息。