使用本地 NetScaler Gateway 作为 Citrix Cloud 的身份提供程序
Citrix Cloud 支持使用本地 NetScaler Gateway 作为身份提供程序对登录到其工作区的订阅者进行身份验证。
通过使用 NetScaler Gateway 身份验证,您可以:
- 继续通过现有的 NetScaler Gateway 对用户进行身份验证,以便他们可以通过 Citrix Workspace 访问您的本地Virtual Apps and Desktops 部署中的资源。
- 将 NetScaler Gateway 身份验证、授权和审核功能与 Citrix Workspace 结合使用。
- 使用直通身份验证、智能卡、安全令牌、条件访问策略、联合等功能,为用户提供通过 Citrix Workspace 访问所需资源的权限。
支持 NetScaler Gateway 身份验证与以下产品版本结合使用:
- NetScaler Gateway 13.0 41.20 Advanced Edition 或更高版本
- NetScaler Gateway 12.1 54.13 Advanced Edition 或更高版本
必备条件
-
Cloud Connector - 至少需要两台服务器来安装 Citrix Cloud Connector 软件。
-
Active Directory - 执行必要的检查。
-
NetScaler Gateway 要求
-
由于已弃用经典策略,请在本地网关上使用高级策略。
-
配置网关以对 Citrix Workspace 的订阅者进行身份验证时,网关将充当 OpenID Connect 提供商。Citrix Cloud 与网关之间的消息符合 OIDC 协议,该协议涉及对令牌进行数字签名。因此,您必须配置证书以对这些令牌进行签名。
-
时钟同步 - 必须将网关同步到 NTP 时间。
-
有关详细信息,请参阅必备条件。
在本地 NetScaler Gateway 上创建 OAuth IdP 策略
重要提示:
您必须已在 Citrix Cloud > 身份和访问管理 > 身份验证选项卡中生成了客户端 ID、加密和 重定向 URL。 有关详细信息,请参阅将本地 NetScaler Gateway 连接到 Citrix Cloud。
创建 OAuth IdP 身份验证策略涉及以下任务:
-
创建 OAuth IdP 配置文件。
-
添加 OAuth IdP 策略。
-
将 OAuth IdP 策略绑定到身份验证虚拟服务器。
-
全局绑定证书。
使用 CLI 创建 OAuth IdP 配置文件
在命令提示窗口中,键入:
add authentication OAuthIDPProfile <name> [-clientID <string>][-clientSecret ][-redirectURL <URL>][-issuer <string>][-audience <string>][-skewTime <mins>] [-defaultAuthenticationGroup <string>]
add authentication OAuthIdPPolicy <name> -rule <expression> [-action <string>] [-undefAction <string>] [-comment <string>][-logAction <string>]
add authentication ldapAction <name> -serverIP <IP> -ldapBase "dc=aaa,dc=local"
ldapBindDn <administrator@aaa.local> -ldapBindDnPassword <password> -ldapLoginName sAMAccountName
add authentication policy <name> -rule <expression> -action <string>
bind authentication vserver auth_vs -policy <ldap_policy_name> -priority <integer> -gotoPriorityExpression NEXT
bind authentication vserver auth_vs -policy <OAuthIDPPolicyName> -priority <integer> -gotoPriorityExpression END
bind vpn global -certkeyName <>
<!--NeedCopy-->
使用 GUI 创建 OAuth IdP 配置文件
-
导航到 安全 > AAA — 应用程序流量 > 策略 > 身份验证 > 高级策略 > OAuth IDP。
-
在 OAuth IDP 页面中,选择 Profiles(配置文件)选项卡,然后单击 Add(添加)。
-
配置 OAuth IdP 配置文件。
注意:
-
从 Citrix Cloud > 身份和访问管理 > 身份验证选项卡中复制并粘贴客户端 ID、密钥和 重定向 URL 值,以建立与 Citrix Cloud 的连接。
-
在 Issuer Name(发行者名称)示例中正确输入网关 URL:https://GatewayFQDN.com
-
还可以在 Audience(受众)字段中复制并粘贴客户端 ID。
-
Send Password(发送密码):启用此选项以获得单点登录支持。默认情况下,此选项处于禁用状态。
-
-
在 Create Authentication OAuth IDP Profile(创建身份验证 OAuth IDP 配置文件)页面上,设置以下参数的值,然后单击 Create(创建)。
- 名称:身份验证配置文件的名称。必须以字母、数字或下划线字符 (_) 开头。名称只能包含字母、数字以及连字符 (-)、句点 (.) 磅 (#)、空格 ()、at (@)、等于 (=)、冒号 (:) 和下划线字符。创建配置文件后无法更改。
- 客户端 ID:标识 SP 的唯一字符串。授权服务器使用此 ID 推断客户端配置。最大长度:127。
- 客户端密钥:用户和授权服务器建立的密钥字符串。最大长度:239。
- 重定向 URL:必须向 SP 上发布代码/令牌的端点。
- 发行者名称:要接受其令牌的服务器的身份。最大长度:127。示例:https://GatewayFQDN.com
- 受众:IdP 发送的代币的目标接收者。此令牌由收件人检查。
- 偏移时间:此选项指定 NetScaler 允许对传入令牌使用的时钟偏差(以分钟为单位)。例如,如果 skewTime 为 10,那么令牌的有效期为(当前时间 - 10)分钟至(当前时间 + 10)分钟,也就是 20 分钟。默认值:5。
- 默认身份验证组:当 IdP 选择可以在 nFactor 流中使用的配置文件时,该组已添加到会话内部组列表中。它可以在表达式 (AAA.USER.IS_MEMBER_OF(“xxx”)) 中用于身份验证策略,以识别与依赖方相关的 nFactor 流。最大长度:63
组将添加到此配置文件的会话中,以简化策略评估过程并帮助自定义策略。除了提取的组外,此组是身份验证成功时选择的默认组。
- 信赖方元数据 URL:NetScaler IdP 可以在该端点上获取有关正在配置的信赖方的详细信息。元数据响应必须包含用于 RP 公钥的 jwks_uri 的端点。最大长度为 255。
- 刷新间隔:信赖方元数据的刷新间隔。默认间隔为 50。
- 加密令牌:选择此选项时, NetScaler 发送的令牌将被加密。
- 签名服务: 用于对数据进行签名的云服务的名称。这仅适用于将签名卸载到云端的情况。
- 属性:要插入到 ID 令牌中的属性的名称-值对。最大长度为 1047 个字符。
- 发送密码:选择此选项可发送 ID 令牌中的加密密码。
-
单击 Policies(策略),然后单击 Add(添加)。
-
在 Create Authentication OAuth IDP Policy(创建身份验证 OAuth IDP 策略)页面上,设置以下参数的值,然后单击 Create(创建)。
- Name(名称)- 身份验证策略的名称。
- Action(操作)- 之前创建的配置文件的名称。
- Log Action(日志操作)- 请求与此策略匹配时要使用的消息日志操作的名称。非强制性提交。
- Undefined-Result Action(未定义的结果操作)- 策略评估结果未定义 (UNDEF) 时应执行的操作。非必填字段。
- Expression(表达式)- 策略用于响应特定请求的默认语法表达式。例如,true。
- Comments(评论)- 对策略的任何评论。
注意:
当 sendPassword 设置为开(默认情况下关闭)时,用户凭据将被加密并通过安全渠道传递给 Citrix Cloud。通过安全通道传递用户凭据允许您在启动时为 Citrix Virtual Apps and Desktops 启用 SSO。
将 OAuthIDP 策略和 LDAP 策略绑定到身份验证虚拟服务器
-
导航到 Configuration(配置)> Security(安全)> AAA - Application Traffic(AAA - 应用程序流量)> Advanced Policies (高级策略)> Actions(操作)> LDAP。
-
在 LDAP Action(LDAP 操作)屏幕上,单击 Add(添加)。
-
在 创建身份验证 LDAP 服务器 屏幕上,设置以下参数的值,然后单击 创建。
- Name(名称)- LDAP 服务器操作的名称
- ServerName/ServerIP(服务器名称/服务器 IP)- 提供 LDAP 服务器的 FQDN 或 IP
- 为 Security Type, Port, Server Type, Time-Out(安全类型、端口、服务器类型、超时)选择适当的值
- 确保已选中 Authentication(身份验证)
-
Base DN(基础 DN)- 开始 LDAP 搜索的基础。例如,
dc=aaa,dc=local
。 -
Administrator Bind DN(管理员绑定 DN):绑定到 LDAP 服务器的用户名。例如,
admin@aaa.local
。 - Administrator Password/Confirm Password(管理员密码/确认密码):用于绑定 LDAP 的密码
- 单击 Test Connection(测试连接)测试您的设置。
- Server Logon Name Attribute(服务器登录名属性):选择 sAMAccountName
- 其他字段不是必填字段,因此可以根据需要进行配置。
-
导航到 Configuration(配置)> Security(安全)> AAA - Application Traffic(AAA - 应用程序流量)> Policies(策略)> Authentication(身份验证)> Advanced Policies (高级策略)> Policy(策略)。
-
在 身份验证策略 屏幕上,单击 添加。
-
在 创建身份验证策略 页面上,为以下参数设置值,然后单击 创建。
- Name(名称)- LDAP 身份验证策略的名称。
- 操作类型 — 选择 LDAP。
- Action(操作)- 选择 LDAP 操作。
- 表达式 — 策略用于响应特定请求的默认语法表达式。例如,true**。
存储身份验证上下文类参考值
配置为本地 IdP 的 NetScaler 可以存储 Citrix Workspace 提供的身份验证上下文类参考 (ACR) 值,以支持 Citrix Workspace 平台 (WSP) 的多域登录功能。
当 Citrix Workspace 将 ACR 值发送到 NetScaler IdP 的 OAuth 授权端点时,NetScaler 会存储 ACR 值。您可以使用这些 ACR 值来确定 nFactor 流中的下一个因素。
OAuth IdP 授权端点 /oauth/idp/
登录会收到带有以下格式的 ACR 值参数的查询。NetScaler 将 ACR 值存储在用户会话属性中。
GET /oauth/idp/login?response_type=code&scope=openid%20profile%20ctxs_cc&acr_values=device_id:69eec3333333333+wsp:wspmultiurlmain.cloud.com&client_id=test&redirect_uri=https%3A%2F%2Fav6.aaa.local%2Foauth%2Flogin&state=Y3R4PXlFYkpFdEJOeDFLN0hUY2VCc1pBOGc2RjU3d21PcjJ2aXprZkhFSkdBTzVVTzM4eEZBUW1qTEFwR25DSE&code_challenge_method=S256&code_challenge=IJgD-qaJZdhuGt3m262BjjMXrFTOwioV6uSBA-uIY18
在上面的示例中,ACR 值参数为 acr_values=device_id:69eec3333333333+wsp:wspmultiurlmain.cloud.com
。
以下是如何在 nFactor 流中使用 ACR 值的表达式示例。
-
要检索 WSP URL,请在策略配置
aaa.user.wsp.eq("URL")
中使用表达式。例如,
add authentication policy wsp_check -rule aaa.user.wsp.eq("wspmultiurlmain.cloud.com ") -action ldap-act
-
要从 ACR 值参数中检索设备 ID,请在策略配置中使用表达式
aaa.user.acr_values.value("device_id").eq(value)
。例如,
add authentication policy acr_value_check -rule aaa.user.acr_values.value("device_id").eq("69eec3333333333") -action ldap-act
-
要从 ACR 值参数中检索 WSP 值,请在策略配置
aaa.user.acr_values.value("wsp").eq("URL")
中使用表达式。例如,
add authentication policy acr_value_check -rule aaa.user.acr_values.value("wsp").eq("wspmultiurlmain.cloud.com") -action ldap-act