Citrix ADC

配置 SSO

将 Citrix ADC SSO 配置为通过模拟进行身份验证比配置 SSO 以通过委派进行身份验证更简单,因此在配置允许的情况下更为可取。你创建了一个 KCD 账户。您可以使用用户的密码。

如果您没有用户的密码,则可以将 Citrix ADC SSO 配置为通过委派进行身份验证。尽管与将 SSO 配置为通过模拟进行身份验证相比更复杂,但委派方法提供了灵活性,因为用户的凭据可能并非在所有情况下都可用于 Citrix ADC 设备。

对于模拟或委派,还必须在 Web 应用程序服务器上启用集成身份验证。

在 Web 应用服务器上启用集成身份验证

要在 Kerberos SSO 管理的每个 Web 应用程序服务器上设置 Citrix ADC Kerberos SSO,请使用该服务器上的配置界面将服务器配置为要求身份验证。通过首选项选择 Kerberos(协商)身份验证,并回退到不支持 Kerberos 的客户端的 NTLM。

以下是将 Microsoft 互联网信息服务器 (IIS) 配置为要求身份验证的说明。如果 Web 应用程序服务器使用 IIS 以外的软件,请参阅该 Web 服务器软件的文档以获取说明。

将 Microsoft IIS 配置为使用集成身份验证的步骤

  1. 登录到 IIS 服务器并打开 Internet 信息服务管理器。
  2. 选择要为其启用集成身份验证的网站。要为 IISM 管理的所有 IIS Web 服务器启用集成身份验证,请为默认网站配置身份验证设置。要为单个服务(如 Exchange、Exadmin、ExchWeb 和公用)启用集成身份验证,请单独配置每个服务的这些身份验证设置。
  3. 打开默认网站或单个服务的属性对话框,然后单击目录安全选项卡。
  4. 身份验证访问控制旁边,选择 编辑。
  5. 禁用匿名访问。
  6. 启用集成 Windows 身份验证(仅)。启用集成的 Windows 身份验证必须自动将 Web 服务器的协议协商设置为协商,NTLM,它为不支持 KerberOS 的设备指定 Kerberos 身份验证并回退到 NTLM。如果未自动选择此选项,请手动将协议协商设置为 NTLM。

通过模拟设置 SSO

您可以通过模拟配置 Citrix ADC SSO 的 KCD 帐户。在此配置中,Citrix ADC 设备在用户向身份验证服务器进行身份验证时获取用户的用户名和密码,并使用这些凭据模拟用户以获取票证授予票证 (TGT)。如果用户名为 UPN 格式,设备将从 UPN 获取用户的领域。否则,它将通过从初始身份验证期间使用的 SSO 域或从会话配置文件中提取用户的名称和领域来获取用户的名称和领域。

注意

如果已在没有域的情况下添加用户名,则无法添加带域的用户名。如果首先添加带域的用户名,然后再添加不带域的相同用户名,则 Citrix ADC 设备会将用户名添加到用户列表中。

配置 KCD 帐户时,必须将领域参数设置为用户正在访问的服务的领域。如果无法通过 Citrix ADC 设备的身份验证或会话配置文件获取用户的领域,则同一领域也将用作用户的领域。

使用密码模拟为 SSO 创建 KCD 帐户

在命令提示符下,键入以下命令:


add aaa kcdaccount <accountname> -realmStr <realm>

<!--NeedCopy-->

对于变量,请替换以下值:

  • 帐户名称。KCD 帐户名称。
  • 领域。分配给 Citrix ADC SSO 的域。

示例

要添加名为 kcdccount1 的 KCD 帐户,并使用名为 kcd虚拟服务器.keytab 的键选项卡,您需要键入以下命令:


add aaa kcdAccount kcdaccount1 -keytab kcdvserver.keytab

<!--NeedCopy-->

有关通过 Citrix ADC GUI 配置 Kerberos 模拟的信息,请参阅 Citrix 支持

通过委派配置 SSO

要按委派配置 SSO,您需要执行以下任务:

  • 如果要通过委派用户证书配置委派,请在 Citrix ADC 设备上安装匹配的 CA 证书并将其添加到 Citrix ADC 配置中。
  • 在设备上创建 KCD 帐户。设备使用此帐户获取受保护应用程序的服务票证。
  • 配置 Active Directory 服务器。

注意

有关创建 KCD 帐户和在 NetScaler 设备上进行配置的详细信息,请参阅以下主题:

在 Citrix ADC 设备上安装客户端 CA 证书

如果要使用客户端证书配置 Citrix ADC SSO,则必须将客户端证书域(客户端 CA 证书)的匹配 CA 证书复制到 Citrix ADC 设备,然后安装 CA 证书。要复制客户端 CA 证书,请使用您选择的文件传输程序将证书和私钥文件传输到 Citrix ADC 设备,并将文件存储在 /nsconfig/SSL 中。

在 Citrix ADC 设备上安装客户端 CA 证书

在命令提示符下,键入以下命令:


add ssl certKey <certkeyName> -cert <cert> [(-key <key> [-password]) | -fipsKey <fipsKey>][-inform ( DER | PEM )][-expiryMonitor ( ENABLED | DISABLED | UNSET ) [-notificationPeriod <positive_integer>]] [-bundle ( YES | NO )]

<!--NeedCopy-->

对于变量,请替换以下值:

  • certkeyName。客户端 CA 证书的名称。必须以 ASCII 字母数字或下划线 (_) 字符开头,并且必须由一到三十一个字符组成。允许的字符包括 ASCII 字母数字、下划线、散列 (#)、句点 (.)、空格、冒号 (:)、在 (@)、等于 (=) 和连字符 (-)。创建证书密钥对后无法更改。如果名称包含一个或多个空格,请将名称用双引号或单引号括起来(例如,“我的证书”或“我的证书”)。
  • 证书。用于形成证书密钥对的 X509 证书文件的完整路径名和文件名。证书文件必须存储在 Citrix ADC 设备的 /nsconfig/SSL/ 目录中。
  • 密钥。包含 X509 证书文件私钥的文件的完整路径名和文件名。密钥文件必须存储在 /nsconfig/SSL/ 目录中的 Citrix ADC 设备上。
  • 密码。如果指定了私钥,则用于加密私钥的密码。使用此选项可以加载 PEM 格式的加密私钥。
  • fipsKey。在 FIPS 设备的硬件安全模块 (HSM) 内创建的 FIPS 密钥或导入到 HSM 的密钥的名称。

    注意

    您可以指定密钥或 FIPS 密钥,但不能同时指定两者。

  • inform。证书和私钥文件的格式(PEM 或 DER)。
  • passplain。传递用于加密私钥的短语。以 PEM 格式添加加密私钥时必填项。
  • expiryMonitor。将 Citrix ADC 设备配置为在证书即将过期时发出警报。可能的值:已启用、已禁用、未设置。
  • notificationPeriod。如果 expiryMonitor 已启用,则证书到期之前发出警报的天数。
  • bundle。将服务器证书链链接到文件中的颁发者证书后,将证书链解析为单个文件。可能的值:是,否。

示例

以下示例将指定的委派用户证书客户证书 .pem 与密钥客户密钥 .pem 一起添加到 Citrix ADC 配置中,并设置密码、证书格式、过期监视器和通知期限。

要添加委派用户证书,您需要键入以下命令:


add ssl certKey customer -cert "/nsconfig/ssl/customer-cert.pem"
-key "/nsconfig/ssl/customer-key.pem" -password "dontUseDefaultPWs!"
-inform PEM -expiryMonitor ENABLED [-notificationPeriod 14]

<!--NeedCopy-->

创建 KCD 帐户

如果要通过委派配置 Citrix ADC SSO,则可以将 KCD 帐户配置为使用用户的登录名称和密码、使用用户的登录名称和密钥选项卡或使用用户的客户端证书。如果使用用户名和密码配置 SSO,Citrix ADC 设备将使用委派用户帐户获取票证授予票证 (TGT),然后使用 TGT 获取每个用户请求的特定服务的服务票证。如果使用键选项卡文件配置 SSO,Citrix ADC 设备将使用委派的用户帐户和密钥选项卡信息。如果使用委派用户证书配置 SSO,Citrix ADC 设备将使用委派用户证书。

使用密码通过委派为 SSO 创建 KCD 帐户

在命令提示符下,键入以下命令:

add aaa kcdAccount <kcdAccount> {-keytab <string>} {-realmStr <string>} {-delegatedUser <string>} {-kcdPassword } {-usercert <string>} {-cacert <string>} [-userRealm <string>]
[-enterpriseRealm <string>] [-serviceSPN <string>]
<!--NeedCopy-->

对于变量,请替换以下值:

  • kcdAccount -KCD 账户的名称。这是一个强制性的论据。最大长度:31
  • keytab -keytab 文件的路径。如果指定了此命令中的其他参数,则不需要给出。最大长度:127
  • realmStr -Kerberos 的领域。最大长度:255
  • delegatedUser - 可以执行 kerberos 约束委派的用户名。最大长度:255
  • kcdPassword -委派用户的密码。 最大长度:31
  • usercert -授权用户的 SSL 证书(包括私钥)。最大长度:255

  • cacert -用于 UserCert 的 CA 证书或在做 PKINIT 反向频道时。 最大长度:255

  • userRealm -用户的领域。最大长度:255

  • enterpriseRealm -用户的企业领域。只有在 KDC 期望企业用户名而不是主要名称的某些 KDC 部署中才能提供此功能。最大长度:255

  • serviceSPN -服务 SPN。指定后,这将用于获取 kerberos 票证。如果未指定,Citrix ADC 将使用服务 fqdn 构建 SPN。最大长度:255

示例(UPN 格式)

要将名为 kcdaccount1 的 KCD 帐户添加到 Citrix ADC 设备配置中,并使用 password1 和 EXAMPLE.COM,范围(以 UPN 格式(作为 root 用户)指定委派用户帐户),请键入以下命令:


add aaa kcdaccount kcdaccount1 –delegatedUser root
-kcdPassword password1 -realmStr EXAMPLE.COM

<!--NeedCopy-->

示例(SPN 格式)

要将名为 kcdaccount1 的 KCD 帐户添加到 Citrix ADC 设备配置中,并使用 password1 和 EXAMPLE.COM 的范围,以 SPN 格式指定委派用户帐户,请键入以下命令:


add aaa kcdAccount kcdaccount1 -realmStr EXAMPLE.COM
-delegatedUser "host/kcdvserver.example.com" -kcdPassword password1

<!--NeedCopy-->

使用键选项卡通过委派为 SSO 创建 KCD 帐户

如果您计划使用密钥选项卡文件进行身份验证,请先创建密钥选项卡。您可以通过登录 AD 服务器并使用 ktpass 实用程序手动创建 keytab 文件,也可以使用 Citrix ADC 配置实用程序创建批处理脚本,然后在 AD 服务器上运行该脚本以生成 keytab 文件。接下来,使用 FTP 或其他文件传输程序将密钥选项卡文件传输到 Citrix ADC 设备,并将其放置在 /nsconfig/krb 目录中。最后,通过委派配置 Citrix ADC SSO 的 KCD 帐户,并向 Citrix ADC 设备提供密钥选项卡文件的路径和文件名。

手动创建密钥选项卡文件

登录到 AD 服务器命令行,然后在命令提示符下键入以下命令:

```ktpass princ ptype KRB5_NT_PRINCIPAL mapuser pass -out


对于变量,请替换以下值:

-  **SPN**。KCD 服务帐户的服务主体名称。
-  **域名**。Active Directory 服务器的域。
-  **用户名**。KSA 帐户用户名。
-  **密码**。KSA 帐户密码。
-  **路径**。生成 keytab 文件后要在其中存储该文件的目录的完整路径名称。

##### 使用 Citrix ADC 配置实用程序创建脚本以生成密钥选项卡文件

1.  导航到**安全 > AAA-应用程序流量。**
1.  在数据窗格中的 **Kerberos 约束委派**下,单击**批处理**文件以生成 Keytab。
1.  在“**生成 KCD(Kerberos 约束委派)键选项卡脚本**”对话框中,设置以下参数:
    -  **域用户名**。KSA 帐户用户名。
    -  **域密码**。KSA 帐户密码。
    -  **服务主体**。KSA 的服务主体名称。
    -  **输出文件名**。要在 AD 服务器上保存 keytab 文件的完整路径和文件名。
1.  清除“**创建域用户帐户**”复选框。
1.  单击**生成脚本**。
1.  登录到 Active Directory 服务器并打开命令行窗口。
1.  从“**生成的脚本”窗口复制脚本** ,然后直接将其粘贴到 Active Directory 服务器命令行窗口中。键选项卡将生成并存储在您指定为**输出文件名的文件名**下的目录中。
1.  使用您选择的文件传输实用程序将密钥选项卡文件从 Active Directory 服务器复制到 Citrix ADC 设备,并将其放置在 /nsconfig/krb 目录中。

##### 创建 KCD 帐户

在命令提示符下,键入以下命令:

add aaa kcdaccount –keytab


示例

要添加名为 kcdccount1 的 KCD 帐户,并使用名为 kcd虚拟服务器.keytab 的键选项卡,您需要键入以下命令:

add aaa kcdaccount kcdaccount1 –keytab kcdvserver.keytab


#### 使用委派用户证书为 SSO 创建 KCD 帐户

在命令提示符下,键入以下命令:

add aaa kcdaccount -realmStr -delegatedUser -usercert -cacert


对于变量,请替换以下值:

-  **帐户名称**。KCD 帐户的名称。
-  **realmStr**。KCD 帐户的领域,通常是为其配置 SSO 的域。
-  **delegatedUser**。委派用户名,采用 SPN 格式。
-  **usercert**。Citrix ADC 设备上委派用户证书文件的完整路径和名称。委派用户证书必须同时包含客户端证书和私钥,并且必须采用 PEM 格式。如果使用智能卡身份验证,则可能必须创建智能卡证书模板,以允许随私钥一起导入证书。
-  **cacert**。Citrix ADC 设备上 CA 证书文件的完整路径和名称。

示例

要添加名为 kcdccount1 的 KCD 帐户,并使用名为 kcd虚拟服务器.keytab 的键选项卡,您需要键入以下命令:

add aaa kcdaccount kcdaccount1 -realmStr EXAMPLE.COM -delegatedUser “host/kcdvserver.example.com” -usercert /certs/usercert -cacert /cacerts/cacert

```

为 Citrix ADC SSO 设置 Active Directory

通过委派配置 SSO 时,除了在 Citrix ADC 设备上创建 KCDAccount 之外,还必须在 LDAP 活动目录服务器上创建匹配的 Kerberos 服务帐户 (KSA),并为 SSO 配置服务器。要创建 KSA,请在活动目录服务器上使用帐户创建过程。要在活动目录服务器上配置 SSO,请打开 KSA 的属性窗口。在委派选项卡中,启用以下选项:信任此用户仅委派到指定的服务,并使用任何身份验证协议。(仅限 Kerberos 的选项不起作用,因为它不启用协议转换或受限委派。)最后,添加 Citrix ADC SSO 管理的服务。

注意

如果“委派”选项卡在 KSA 帐户属性对话框中不可见,则在您可以按照所述配置 KSA 之前,必须使用 Microsoft setspn 命令行工具配置活动目录服务器,以便该选项卡可见。

为 Kerberos 服务帐户配置委派

  1. 在您创建的 Kerberos 服务帐户的 LDAP 帐户配置对话框中,单击委派选项卡。
  2. 选择“仅信任此用户委派到指定服务”。
  3. 在“仅信任此用户对指定服务进行委派”下,选择“使用任何身份验证协议”。
  4. 在“此帐户可以提供委派凭据的服务”下,单击“添加”。
  5. 在“添加服务”对话框中,单击“用户计算机”,选择承载要分配给服务帐户的资源的服务器,然后单 击“确定”。

    注意

    -  约束委派不支持在分配给帐户的域以外的域中托管的服务,即使 Kerberos 可能与其他域有信任关系。
    
    • 如果在活动目录中创建了新用户,请使用以下命令创建 setspn:setspn -A host/kcdvserver.example.com example\kcdtest
  6. 返回添加服务对话框的可用服务列表中,选择分配给服务帐户的服务。Citrix ADC SSO 支持 HTTP 和 MSSQLSVC 服务。
  7. 单击 “ 确定”。

何时使用高级加密来配置 KCD 账户需要注意的事项

  • 使用密钥标签时的示例配置: add kcdaccount lbvs_keytab_aes256 -keytab “/nsconfig/krb/kcd2_aes256.keytab”
  • 如果 keytab 具有多种加密类型,请使用以下命令。该命令还捕获域用户参数:add kcdaccount lbvs_keytab_aes256 -keytab “/nsconfig/krb/kcd2_aes256.keytab” –domainUser “HTTP/lbvs.aaa.local”
  • 使用用户凭据时使用以下命令: add kcdaccount kslb2_user -realmStr AAA.LOCAL -delegatedUser lbvs -kcdPassword <password>
  • 确保提供了正确的 domainUser 信息。您可以在 AD 中查找用户登录名。