PoC 指南-ZTNA-自适应身份验证-内部员工与外部员工
概述
由于混合劳动力公司需要确定员工是从公司办公室还是通过互联网访问其应用程序。随着许多公司采用 Zero Trust,对员工位置的关注就不那么重要了。尽管如此,识别员工访问位置使公司有机会降低身份验证要求、减少摩擦,从而改善用户体验。位于安全边界后面的内部位置的员工可能只需要两个身份验证因素,而在外部位置的员工可能需要三个身份验证因素,以自信地验证其身份并建立信任。
实施多因素身份验证是验证身份和改善安全状况的最佳方法之一。LDAP 是一种用于验证域用户名和密码的命令方法。本机(基于时间的)一次性密码 (OTP) 是使用现成可用的身份验证器应用程序实现另一个因素的便捷方法。它允许用户将身份验证器应用程序中的验证码输入到网关表单中进行身份验证。
Citrix 自适应身份验证支持 LDAP 和本机 OTP 身份验证,它们可以为包括 Citrix Secure Private Access 和 Citrix Virtual Apps and Desktops 服务在内的各种服务提供身份验证。在此 POC 指南中,我们演示了如何使用它们进行身份验证。
简介
下面的动画显示了一个端点,该端点通过了设备状态检查,并且要求用户获取域凭据。接下来,终端节点未通过设备状态检查,用户将面临域凭据和本机 otp 通行码的挑战。
它对已完成的安装以及以下组件的配置进行假设:
- Citrix ADC 已安装、许可并配置了绑定到通配符证书的外部可访问的 AA 虚拟服务器
- Citrix ADC 使用 Oauth 与Citrix Cloud 集成
- 安装了 Citrix Workspace 应用程序
- 支持基于时间的 OTP 的受支持身份验证器应用程序(包括 Microsoft Authenticator、Google Authenticator 或 Citrix SSO)
- Active Directory (AD) 可通过 Citrix 连接器设备访问
有关最新产品版本和许可证要求,请参阅 Citrix 文档: 本机 OTP 身份验证
配置
本概念验证指南演示了如何:
- 配置Citrix Cloud
- 配置自适应身份验证策略-CLI
- 配置自适应身份验证策略-GUI
- 配置 SPA 和 CVAD 以使用智能标记
- 验证用户终端身份验证
配置Citrix Cloud
- 连接到 Citrix Cloud 并以管理员帐户登录
- 在 Citrix Workspace 中,从左上角的菜单 访问身份和访问管理
- 将 Citrix Gateway-自适应身份验证配置为工作区的身份验证方法。
配置自适应身份验证策略-CLI
首先,我们登录 Citrix ADC 上的 CLI,然后输入 EPA 和 LDAP 的身份验证操作和相关策略以及登录架构。然后,我们登录到 GUI 以构建、应用我们的策略并完成多重身份验证配置。
Ldap 警察
对于 LDAP 操作,请填充必填字段,以便在字符串中创建 LDAP 操作并将其粘贴到 CLI 中:
-
ldapAction
-输入操作名称。 -
serverIP
-输入域服务器的 FQDN 或 IP 地址。 -
serverPort
-输入 LDAP 端口。 -
ldapBase
-输入存储在目录中的相关用户的域对象和容器的字符串。 -
ldapBindDn
-输入用于查询域用户的服务帐号。 -
ldapBindDnPassword
-输入您的服务帐户密码。 -
ldapLoginName
-输入用户对象类型。 -
groupAttrName
-输入组属性名称。 -
subAttributeName
-输入子属性名称。 -
secType
-输入安全类型。 -
ssoNameAttribute
-输入单点登录名称属性。
对于 LDAP 策略,请填充必填字段以在字符串中引用 LDAP 操作并将其粘贴到 CLI 中:
-
Policy
-输入策略名称。 -
action
-输入我们上面创建的 “电子邮件” 操作的名称。
有关详细信息,请参阅 LDAP 身份验证策略。
- 首先通过打开指向 Citrix ADC 的 NSIP 地址的 SSH 会话来连接到 CLI,然后以管理员用户身份登录。
ldapupnmanage
此操作和策略将对网站 fqdn adaptiveauth.wwco.net 的请求进行匹配,并在网址后面附加 /manageotp,并允许他们使用身份验证器应用程序注册本机 OTP
为您的环境更新以下字段,然后将字符串复制并粘贴到 CLI 中:
add authentication ldapAction authact_ldapupnmanage -serverIP 10.53.8.10 -serverPort 636 -authTimeout 3600 -ldapBase "DC=wwco,DC=net" -ldapBindDn s_adc@yourdomain.com -ldapBindDnPassword abc123 -encrypted -encryptmethod ENCMTHD_3 -kek -suffix 2022_02_02_16_16_21 -ldapLoginName userPrincipalName -groupAttrName memberOf -subAttributeName cn -secType SSL -ssoNameAttribute UserPrincipalName -nestedGroupExtraction ON -maxNestingLevel 3 -groupNameIdentifier userPrincipalName -groupSearchAttribute userPrincipalName -groupSearchSubAttribute userPrincipalName
add authentication Policy authpol_ldapupnmanage -rule "http.req.cookie.value(\"NSC_TASS\").eq(\"manageotp\")" -action authact_ldapupnmanage
workspaceoauth
此操作和策略为主 Workspace URL 建立与 Citrix Cloud 的安全 oauth 通信。
为您的环境更新以下字段,然后将字符串复制并粘贴到 CLI 中:
add authentication OAuthIDPProfile authact_workspaceoauth -clientID xyz1 -clientSecret abc123 -encrypted -encryptmethod ENCMTHD_3 -kek -suffix 2022_02_02_16_16_21 -redirectURL "https://accounts.cloud.com/core/login-cip" -issuer "https://adaptiveauth.yourdomain.com" -audience xyz2 -sendPassword ON
add authentication OAuthIdPPolicy authpol_workspaceoauth -rule true -action authact_workspaceoauth
workspaceoauth2
此操作和策略为自定义 Workspace URL 建立与 Citrix Cloud 的安全 oauth 通信。
为您的环境更新以下字段,然后将字符串复制并粘贴到 CLI 中:
add authentication OAuthIDPProfile authact_workspaceoauth2 -clientID xyz11 -clientSecret abc123 -encrypted -encryptmethod ENCMTHD_3 -kek -suffix 2022_02_02_16_16_21 -redirectURL "https://workspace.yourdomain.com/core/login-cip" -issuer "https://adaptiveauth.yourdomain.com" -audience xyz22 -sendPassword ON
add authentication OAuthIdPPolicy authpol_workspaceoauth2 -rule true -action authact_workspaceoauth2
ldapupn
此操作和策略使用 UserPrincipalName 对域目录进行 ldap 身份验证。
为您的环境更新以下字段,然后将字符串复制并粘贴到 CLI 中:
add authentication ldapAction authact_ldapupn -serverIP 10.53.8.10 -serverPort 636 -authTimeout 3600 -ldapBase "DC=yourdomain,DC=com" -ldapBindDn s_adc@yourdomain.com -ldapBindDnPassword abc123 -encrypted -encryptmethod ENCMTHD_3 -kek -suffix 2022_02_02_16_16_21 -ldapLoginName userPrincipalName -groupAttrName memberOf -subAttributeName cn -secType SSL -ssoNameAttribute UserPrincipalName -nestedGroupExtraction ON -maxNestingLevel 3 -groupNameIdentifier userPrincipalName -groupSearchAttribute userPrincipalName -groupSearchSubAttribute userPrincipalName
add authentication Policy authpol_ldapupn -rule true -action authact_ldapupn
ldapsam
此操作和策略使用 samAccountName 对域目录进行 ldap 身份验证。
为您的环境更新以下字段,然后将字符串复制并粘贴到 CLI 中:
add authentication ldapAction authact_ldapsam -serverIP 10.53.8.10 -serverPort 636 -authTimeout 3600 -ldapBase "DC=yourdomain,DC=com" -ldapBindDn s_adc@yourdomain.com -ldapBindDnPassword abc123 -encrypted -encryptmethod ENCMTHD_3 -kek -suffix 2022_02_02_16_16_21 -ldapLoginName samAccountName -groupAttrName memberOf -subAttributeName cn -secType SSL -ssoNameAttribute sAMAccountName -nestedGroupExtraction ON -maxNestingLevel 3 -groupNameIdentifier sAMAccountName -groupSearchAttribute sAMAccountName -groupSearchSubAttribute sAMAccountName
add authentication Policy authpol_ldapsam -rule true -action authact_ldapsam
ldapupn_otp
此操作和策略执行本机 otp 身份验证。
为您的环境更新以下字段,然后将字符串复制并粘贴到 CLI 中:
add authentication ldapAction authact_ldapupn_otp -serverIP 10.53.8.10 -serverPort 636 -authTimeout 3600 -ldapBase "DC=yourdomain,DC=com" -ldapBindDn s_adc@yourdomain.com -ldapBindDnPassword abc123 -encrypted -encryptmethod ENCMTHD_3 -kek -suffix 2022_02_02_16_16_21 -ldapLoginName userPrincipalName -groupAttrName memberOf -subAttributeName cn -secType SSL -ssoNameAttribute UserPrincipalName -authentication DISABLED -nested GroupExtraction ON -maxNestingLevel 3 -groupNameIdentifier userPrincipalName -groupSearchAttribute userPrincipalName -groupSearchSubAttribute userPrincipalName -OTPSecret userParameters
add authentication Policy authpol_ldapupn_otp -rule true -action authact_ldapupn_otp
epa_internal_cert_domain
这决定了客户端是否尝试从有效的企业公有 IP 地址进行身份验证(这与外部防火墙和路由器上使用的网络地址转换范围相对应)。它还验证了这个国家。它还会验证有效的企业设备证书。它还会验证设备是否已加入企业域。
为您的环境更新以下字段,然后将字符串复制并粘贴到 CLI 中:
add authentication epaAction authact_EPA_internal_cert_domain -csecexpr "sys.client_expr(\"device-cert_0_0\") && sys.client_expr("sys_0_DOMAIN_yourdomain.com")" -defaultEPAGroup VALIDINTERNALCERTDOMAIN -quarantineGroup NOVALIDINTERNALCERTDOMAIN
add authentication Policy authpol_EPA_internal_cert_domain -rule "CLIENT.IP.SRC.IN_SUBNET(1.0.0.0/8) && CLIENT.IP.SRC.MATCHES_LOCATION(\"*.US.*.*.*.*\")" -action authact_EPA_internal_cert_domain
noauthn
此操作和策略是无身份验证的占位符,通常用作下一个策略标签的占位符,以评估当前策略标签中的先前策略何时失败。
为您的环境更新以下字段,然后将字符串复制并粘贴到 CLI 中:
add authentication noAuthAction authact_noauthn
add authentication Policy authpol_noauthn -rule true -action authact_noauthn
登录模式
接下来我们创建用于每个因素的登录模式。
lspol_singlemanage
此登录架构用于本机 OTP 注册。
为您的环境更新以下字段,然后将字符串复制并粘贴到 CLI 中:
add authentication loginSchema lsact_singlemanage -authenticationSchema "/nsconfig/loginschema/LoginSchema/SingleAuthManageOTP.xml"
add authentication loginSchemaPolicy lspol_singlemanage -rule "http.req.cookie.value(\"NSC_TASS\").eq(\"manageotp\")" -action lsact_singlemanage
lspol_singleauth
此登录架构用于 LDAP 用户名和密码身份验证。
为您的环境更新以下字段,然后将字符串复制并粘贴到 CLI 中:
add authentication loginSchema lsact_singleauth -authenticationSchema "/nsconfig/loginschema/LoginSchema/SingleAuth.xml"
add authentication loginSchemaPolicy lspol_singleauth -rule true -action lsact_singleauth
lspol_dualauthotp
此登录架构用于本机 OTP 身份验证。
为您的环境更新以下字段,然后将字符串复制并粘贴到 CLI 中:
add authentication loginSchema lsact_dualauthotp -authenticationSchema "/nsconfig/loginschema/LoginSchema/DualAuth.xml"
add authentication loginSchemaPolicy lspol_dualauthotp -rule true -action lsact_dualauthotp
智能标记
接下来,我们创建智能标记,将设备状态检查结果中继回 Citrix Cloud 服务。
lspol_singlemanage
此登录架构用于本机 OTP 注册。
为您的环境更新以下字段,然后将字符串复制并粘贴到 CLI 中:
add authentication loginSchema lsact_singlemanage -authenticationSchema "/nsconfig/loginschema/LoginSchema/SingleAuthManageOTP.xml"
add authentication loginSchemaPolicy lspol_singlemanage -rule "http.req.cookie.value(\"NSC_TASS\").eq(\"manageotp\")" -action lsact_singlemanage
证书
域证书
在此 POC 中,我们使用了与 Active Directory 域相对应的通配符证书,它也对应于我们用来访问网关虚拟服务器(adaptiveauth.yourdomain.com)的完全限定域名
- 登录 Citrix ADC GUI
- 导航到 流量管理 > SSL> 证书 > 所有证书 以验证您是否安装并链接了域证书和 CA。 有关更多信息,请参阅 Citrix ADC SSL 证书 。
设备证书
用户和设备证书管理有许多系统和选项。在此 POC 中,我们使用安装在 Active Directory 服务器上的 Microsoft 证书颁发机构。我们还将 Windows 10 终端节点加入该域。
- 在加入了域的 Windows 10 端点上的“开始”菜单中,我们输入
mmc
,右键单击并以管理员身份运行 - 选择 “文件” > “添加/删除”,选择 “证书”,选择箭头将其移动到 “选定的管理单元” 窗格中,依次选择 “计算机帐户”、“下一步”、“本地计算机”
- 打开 “个人” 文件夹,右键单击 “证书” 文件夹 > “所有任务” > “申请新
证书”
- 单击下一步直到您获得证书类型,选择计算机,然后单击注册,然后单击完成
- 双击它安装的证书,选择证书路径选项卡,选择顶部的根 CA,然后单击查看证书。(注意:我们可以从 Active Directory 服务器导出 CA,但对于 POC,我们可以在这里执行它来消除步骤)
- 在弹出窗口中选择详细信息选项卡,选择复制到文件,单击下一步,单击下一步(接受 DER 编码)
- 选择浏览,然后输入文件名,选择保存,选择下一步,然后选择完成以存储 CA 证书文件。
- 现在我们将导航到 **流量管理 > SSL > 证书 > CA 证书将其导入 ADC
- 单击 “安装”,我们输入名称
DeviceCertificateCA
,选择 “选择文件”,“本地”,然后选择文件,“打开”,然后单击 “安装”
有关详细信息,请参阅 LDAP 身份验证策略。
配置自适应身份验证策略-GUI
现在,我们将创建一个 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
验证用户终端节点
现在我们通过对 Citrix Virtual Apps and Desktops 环境进行身份验证来测试本机 OTP。
使用 Citrix SSO 应用程序注册
首先,用户使用 Citrix SSO 应用程序将其设备注册为本机 OTP。
- 打开浏览器,然后导航到由 Citrix Gateway 管理的域 FQDN,并在 FQDN 末尾附加
/manageotp
。我们使用https://adaptiveauth.yourdomain.com/manageotp
- 将浏览器重定向到登录屏幕后,输入用户 UPN 和密码
- 在下一个屏幕上选择添加设备,输入名称。我们使用
iPhone7_nOTP
- 选择 Go,然后会出现二维码
- 在您的移动设备上打开 Citrix SSO 应用程序或其他身份验证器应用程序,例如Microsoft 或谷歌(可从应用商店下载)
- 选择添加新令牌
- 选择扫描二维码
- 选择 “将相机对准二维码”,捕获后选择 “添加
”
- 选择 “保存” 以存储令牌
- 令牌现在处于活动状态,每隔 30 秒开始显示 OTP 代码
- 选择完成,您会看到设备已成功添加
的确认
登录 CCitrix Cloud 服务
然后,用户从 Citrix SSO 应用程序输入其 UserPrincipalName、密码和 OTP 密码以访问其虚拟应用程序和桌面。
- 打开浏览器(或 Citrix Workspace 应用程序),然后导航到您的 Workspace FQDN(位于 Citrix Cloud 的工作空间配置下)。我们使用
https://adaptiveauth.yourdomain.com
受信任的场景
- 确保设备已加入域,并且安装了企业设备证书,并且或位于配置的 “内部” 位置范围内。
- 将浏览器重定向到登录屏幕后,输入用户 userPrincipalName 和密码
- 验证用户的 Secure Private Access 应用程序和 Citrix Virtual Apps and Desktops 是否显示
不受信任的场景
- 确保设备未加入域,或者缺少企业设备证书,或者不在配置的 “内部” 位置范围内。
- 将浏览器重定向到登录屏幕后,输入用户 userPrincipalName 和密码
- 打开 Citrix SSO 应用程序,在
iPhone7_nOTP
设备条目代码
- 验证是否显示了用户的 Secure Private Access 应用程序和 Citrix Virtual Apps and Desktops
故障排除
下面我们将看看本地 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
)来节省时间,您可能会看到 “管理员密码” 字段似乎已填充,但您必须重新输入密码。
摘要
确定员工访问位置使公司有机会降低身份验证要求、减少摩擦,从而改善用户体验。位于安全边界后面的内部位置的员工可能只需要两个身份验证因素,而在外部位置的员工可能需要三个身份验证因素,以自信地验证其身份并建立信任。
引用
有关更多信息,请参阅:
本机 OTP 身份验证 — 查找有关本机 OTP 实施和用例的更多详细信息。