ADC

配置单点登录

将 NetScaler 单点登录 (SSO) 配置为通过模拟进行身份验证比将 SSO 配置为通过委派进行身份验证更简单,因此,如果配置允许,则更可取。您创建一个 KCD 帐户。您可以使用用户的密码。

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

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

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

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

以下是配置 Microsoft Internet 信息服务器 (IIS) 以要求身份验证的说明。如果您的 Web 应用程序服务器使用 IIS 以外的软件,请查阅该 Web 服务器软件的文档以获取相关说明。

配置 Microsoft IIS 以使用集成身份验证

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

通过模拟设置 SSO

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

注意

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

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

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

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


add aaa kcdaccount <accountname> -realmStr <realm>

<!--NeedCopy-->

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

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

示例

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


add aaa kcdAccount kcdaccount1 -keytab kcdvserver.keytab

<!--NeedCopy-->

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

通过委派配置 SSO

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

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

注意:

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

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

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

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

    注意

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

  • inform。证书和私钥文件的格式,可以是 PEM 或 DER。
  • passplain。用于加密私钥的密码短语。添加 PEM 格式的加密私钥时必需。
  • experyMonitor。将 NetScaler 设备配置为在证书即将到期时发出警报。可能的值:启用、禁用、未设置。
  • notificationPeriod。如果 expiryMonitor 设置为 ENABLED,则表示证书过期前发出警报的天数。
  • bundle。将服务器证书链接到文件中的颁发者证书后,将证书链解析为单个文件。可能的值:YES, NO。

示例

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

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


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 帐户

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

注意:

对于跨领域,委派用户的 servicePrincipalName 的格式必须为 host/<name>。如果不是这种格式,请将委派用户 <servicePrincipalName> 的 servicePrincipalName 更改为 host/<service-account-samaccountname>。您可以在域控制器中检查委派用户帐户的属性。更改的一种方法是更改委派用户的 logonName 属性。

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

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

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

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

  • kcd Account-KCD 帐户的名称。这是一个强制性的参数。最大长度:31
  • RealmStr -Kerberos 的境界。最大长度:255
  • 委派用户 - 可以执行 kerberos 约束委派的用户名。委派的用户名来自域控制器的 servicePrincipalName。对于跨领域,委派用户的 servicePrincipalName 的格式必须为 host/<name>。最大长度:255。
  • kcdPas sword-委派用户的密码。最大长度:31
  • UserRealm - 用户的领域。最大长度:255
  • EnterpriseRealm - 用户的企业领域。这仅在某些 KDC 部署中给出,在这些部署中,KDC 需要企业用户名而不是主体名称。最大长度:255
  • ServicesPN -服务 SPN。指定后,它将用于获取 kerberos 票证。如果未指定,NetScaler 将使用服务 FQDN 构建 SPN。最大长度:255

示例(UPN 格式):

要将名为 kcdaccount1 的 KCD 帐户添加到 NetScaler 设备配置中,密码为 password1 和 EXAMPLE.COM 领域,并以 UPN 格式(作为 root 用户)指定委派用户帐户,您需要键入以下命令:


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

<!--NeedCopy-->

示例(SPN 格式):

要将名为 kcdaccount1 的 KCD 帐户添加到 NetScaler 设备配置中,密码为 password1 和 EXAMPLE.COM 领域,并以 SPN 格式指定委派用户帐户,您需要键入以下命令:


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

<!--NeedCopy-->

使用密钥表通过委派创建 SSO 的 KCD 帐户

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

注意:

对于跨领域,如果要获取 Keytab 文件作为 KCD 帐户的一部分,请使用以下命令获取更新的委托用户名。

在域控制器中,创建更新的 Keytab 文件。

ktpass /princ <servicePrincipalName-with-prefix<host/>Of-delegateUser>@<DC REALM in uppercase> /ptype KRB5_NT_PRINCIPAL /mapuser <DC REALM in uppercase>\<sAMAccountName> /pass <delegatedUserPassword> -out filepathfor.keytab

filepathfor.keytab 文件可以置于 NetScaler 设备中,也可以用作 ADC KCD 帐户中 Keytab 配置的一部分。

手动创建 keytab 文件

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

ktpass princ <SPN> ptype KRB5_NT_PRINCIPAL mapuser <DOMAIN><username> pass <password> -out <File_Path>
<!--NeedCopy-->

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

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

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

add aaa kcdaccount <accountname> –keytab <keytab>
<!--NeedCopy-->

示例

要添加名为 kcdccount1 的 KCD 帐户并使用名为 kcdvserver.keytab 的密钥表,您需要键入以下命令:

add aaa kcdaccount kcdaccount1 –keytab kcdvserver.keytab
<!--NeedCopy-->

使用委派用户证书通过委派创建 SSO 的 KCD 帐户

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

add aaa kcdaccount <accountname> -realmStr <realm> -delegatedUser <user_nameSPN> -usercert <cert> -cacert <cacert>
<!--NeedCopy-->

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

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

示例

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

add aaa kcdaccount kcdaccount1 -realmStr EXAMPLE.COM
     -delegatedUser "host/kcdvserver.example.com" -usercert /certs/usercert
     -cacert /cacerts/cacert
<!--NeedCopy-->

为 NetScaler SSO 设置Active Directory

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

注意:

如果在 KSA 帐户属性对话框中看不到“委派”选项卡,则必须使用 Microsoft setspn 命令行工具来配置 Active Directory 服务器,以便该选项卡可见,然后才能按说明配置 KSA。

为 Kerberos 服务帐户配置委派

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

    注意:

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

更改了配置,使 KCD 能够支持子域

如果针对 -delegatedUser 为 KCD 帐户配置了 samAccountName,则 KCD 不适用于从子域访问服务的用户。在这种情况下,您可以修改 NetScaler 设备和 Active Directory 上的配置。

  • host/<service-account-samaccountname>.<completeUSERDNSDOMAIN> 格式(例如 host/svc_act.child.parent.com)在 AD 上更改服务帐户 <service-account-samaccountname>(在 KCD 帐户上配置为 delegateUser)登录名。

    可以手动或使用 ktpass 命令更改服务帐户。ktpass 自动更新服务帐户。

    ktpass /princ host/svc_act.child.parent.com@CHILD.PARENT.COM /ptype KRB5_NT_PRINCIPAL /mapuser CHILD\sv_act /pass serviceaccountpassword -out filepathfor.keytab

  • 在 NetScaler 设备上修改 KCD 帐户中的委托用户。
  • 将 KCD 帐户中的 -delegatedUser 参数修改为 host/svc_act.child.parent.com

当使用高级加密来配置KCD帐户时需要注意的要点

  • 使用 keytab 时的配置示例: 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>

域用户信息

为 Kerberos SSO 使用高级加密类型时,请确保提供正确的域用户信息。您可以从 Active Directory 获取有关用户登录名的信息。

使用 Kerberos 委托配置 NetScaler SSO 时

使用委托为 Kerberos SSO 使用高级加密类型时,add aaa kcdaccount 命令的 delagatedUser 参数必须是用户的服务主体名称 (SPN)。服务主体名称区分大小写。

要知道用户的服务主体名称,请在 Active Directory 域控制器上使用 setspn -L <domain\user> 命令。例如, setspn -L EXAMPLE\username

要设置服务主体名称,请在 Active Directory 域控制器上使用 setspn 命令。要创建密钥表文件,请在 Active Directory 域控制器上使用 ktpass 命令。以下是如何执行此操作的示例:

  • setspn: setspn -S host/username.example.com EXAMPLE\username
  • keytab: ktpass /princ host/username.example.com@EXAMPLE.COM /ptype KRB5_NT_PRINCIPAL /mapuser EXAMPLE.COM\username /pass XXXX /crypto AES256-SHA1 -out <pathto.keytab.file>

在 Active Directory 上执行上述操作后,使用 NetScaler CLI 上的 add kcdaccountsetkcdaccount 命令使用配置的 SPN 更新 KCD 帐户。

要查看特定用户帐户的 SPN,请导航到 Active Directory 的“用户属性”部分。

使用 Kerberos 模拟配置 NetScaler SSO 时

使用模拟对 Kerberos SSO 使用高级加密类型时,请确保 SSO 凭据与最终用户的正确服务主体名称一起使用。如果最终用户登录凭据不适用于 Kerberos SSO,则配置相应的用户表达式以设置 SSO 用户名。

如果用户主体名称是 Active Directory 上最终用户的正确服务主体名称,则:

  • 如果最终用户登录使用 LDAP 身份验证,则使用 LDAPAction 命令中的 ssoNameAttribute 参数设置 SSO 用户名。

    示例:set authentication ldapAction ldap_act -ssoNameAttribute userPrincipalName

  • 如果使用任何其他身份验证方法进行用户登录,请使用 trafficAction 命令中的 userExpression 参数。例如,如果用户 attribute1 存储了用户主体名称,则可以与流量操作 AAA.USER.ATTRIBUTE(1) 一起使用。

    示例:add tm traffic action traf_act -userExpression AAA.USER.ATTRIBUTE(1)

配置单点登录