ADC

NetScaler 作为 SAML IdP

SAML IdP(身份提供程序)是部署在客户网络中的 SAML 实体。IdP 接收来自 SAML SP 的请求,并将用户重定向到登录页面,用户必须在登录页面中输入凭据。IdP 通过 Active Directory(外部身份验证服务器,例如 LDAP)对这些凭据进行身份验证,然后生成发送到 SP 的 SAML 断言。

SP 验证令牌,然后授予用户对请求的受保护应用程序的访问权限。

当 NetScaler 设备配置为 IdP 时,所有请求都将由与相关 SAML IdP 配置文件关联的身份验证虚拟服务器接收。

注意

在部署中,在设备或任何外部 SAML SP 上配置 SAML SP 时,NetScaler 设备可以用作 IdP。

用作 SAML IdP 时,NetScaler 设备:

  • 支持能够支持传统登录的所有身份验证方法。

  • 以数字方式签署断言。

  • 支持单重身份验证和双重身份验证。不得将 SAML 配置为辅助身份验证机制。

  • 可以使用 SAML SP 的公钥加密断言。当断言包含敏感信息时,建议执行此操作。

  • 可以配置为仅接受来自 SAML SP 的数字签名请求。

  • 可以使用以下基于 401 的身份验证机制登录 SAML IdP:协商、NTLM 和证书。

  • 除了 NameId 属性外,还可以配置为发送 16 个属性。必须从相应的身份验证服务器中提取属性。对于其中的每个人,您可以在 SAML IdP 配置文件中指定名称、表达式、格式和友好名称。

  • 如果将 NetScaler 设备配置为多个 SAML SP 的 SAML IdP,则用户无需每次都进行明确身份验证即可访问不同 SP 上的应用程序。NetScaler 设备为第一次身份验证创建会话 cookie,随后的每个请求都使用此 Cookie 进行身份验证。

  • 可以在 SAML 断言中发送多值属性。

  • 支持发布和重定向绑定。NetScaler 版本 13.0 Build 36.27 中引入了对构件绑定的支持。

  • 可以指定 SAML 断言的有效性。

    如果 NetScaler SAML IdP 上的系统时间与对等 SAML SP 上的系统时间不同步,则任何一方都可能使消息失效。为了避免此类情况,您现在可以配置断言有效的持续时间。

    此持续时间称为“倾斜时间”,指定必须接受消息的分钟数。可以在 SAML SP 和 SAML IdP 上配置倾斜时间。

  • 可以配置为仅向在 IdP 上预配置的或信任的 SAML SP 提供断言。对于此配置,SAML IdP 必须具有相关 SAML SP 的服务提供商 ID(或颁发者名称)。

    注意

    • 在继续操作之前,请确保您的身份验证策略已绑定到 LDAP 身份验证虚拟服务器。

    • 有关如何配置 LDAP 操作以检索所需属性的详细信息,请参阅 LDAP 身份验证的名称-值属性支持

使用 CLI 将 NetScaler 设备配置为 SAML IdP

  1. 创建 SAML IdP 配置文件。

    示例

    将 NetScaler 设备添加为 IdP,并将 SiteMinder 添加为 SP。

    add authentication samlIdPProfile samlIDPProf1 -samlSPCertName siteminder-cert -encryptAssertion ON -metadataUrl https://samlidp.example.com/metadata -samlIdPCertName ns-cert -assertionConsumerServiceURL https://example.com/cgi/samlauth -rejectUnsignedRequests ON -signatureAlg RSA-SHA256 -digestMethod SHA256 –acsUrlRule AAA.LOGIN.SAML_REQ_ACS_URL.REGEX_MATCH(re#^https://example\.com/cgi/samlauth$#)

  2. 配置 SAML IdP 配置文件。在以下示例中,IdP 会话包含“userPrincipalName”属性。

    set samlidPProfile SAML-IDP-Profile -Attribute1 "userPrincipalName" -Attribute1Expr "AAA.USER.ATTRIBUTE(\"userPrincipalName\")"

    注意事项

    • 在 SAML IdP 配置文件中,配置 acsURLRule,该 acsURLRule 采用此 IdP 的适用服务提供商 URL 列表的表达式。此表达式取决于正在使用的 SP。如果 NetScaler 配置为 SP,则 ACS URL 为 https://<SP-domain_name>/cgi/samlauth。建议您在表达式中使用完整的 URL 进行匹配。

    • 如果您希望 SAML IdP 只允许一个 ACS URL,请使用以下命令:

      以下 CLI 示例使用 https://testlb.aaa.local 作为 ACS URL:

       set samlidpprofile SAML_IDP_profile -acsurlrule  "AAA.LOGIN.SAML_REQ_ACS_URL.eq("https://testlb.aaa.local")"
       <!--NeedCopy-->
      
    • 如果您希望 SAML IdP 将 ACS URL 与正则表达式匹配,请使用以下表达式:

      –acsUrlRule AAA.LOGIN.SAML_REQ_ACS_URL.REGEX_MATCH(re#^https://example.com/cgi/samlauth$#)

      上面的表达式确保 ACS URL 与 https://example.com/cgi/samlauth。正则表达式开头的“^”符号确保 NetScaler 不允许“https”之前的任何内容。正则表达式末尾的“$”符号确保 NetScaler 不允许在“samlauth”之后使用任何内容。

      如果表达式为 -acsUrlRule AAA.LOGIN.SAML_REQ_ACS_URL.REGEX_MATCH(re#https://example.com/cgi/#),则 SAML IdP 允许任何 ACS URL,如以下示例所示:

      • https://example.com/cgi/samlauth

      • abcdhttps://example.com/cgi/xyz

      • https://example.com/cgi/abcde

    • SAML 仅支持 RSA 证书。不支持 HSM、FIPS 等其他证书。

    有关该命令的更多详细信息,请参阅 https://developer-docs.citrix.com/projects/citrix-adc-command-reference/en/latest/authentication/authentication-samlActionhttps://support.citrix.com/article/CTX316577

    • 如果 IdP 注销 URL 与重定向 URL 不同且用户在 NetScaler 登录页面上停留的时间超过 2 分钟,则当用户尝试进行身份验证时会出现服务器错误HTTP/1.1 Internal Server Error 43549。NetScaler 日志显示一条消息,表明传入的帖子注销重定向 URL 不在用户的白名单注销重定向 URL 中。

      要解决此问题,请绑定模式集,如以下示例所示:

      bind patset ns_aaa_oauthidp_logout_redirect_uris "https://FQDN and path to the logout url"

    • 如果将身份验证虚拟服务器配置为 SAML SP,则必须在 SAML IdP 配置文件中使用的元数据 URL 为 https://<netscaler-saml-sp-fqdn>/metadata/samlsp/saml_sp_act。例如,

      add authentication samlIdPProfile SAML_IDP_profile -samlIdPCertName aaa_local -assertionConsumerServiceURL "https://ksav.ksaaa.local/cgi/samlauth" -samlIssuerName "https://ksidp1.aaa.local/saml/login" -rejectUnsignedRequests OFF -serviceProviderID kslb.ksaaa.local -signAssertion NONE -SPLogoutUrl "https://ksav.ksaaa.local/cgi/tmlogout" -logoutBinding REDIRECT -metadataUrl "https://ksav.ksaaa.local/metadata/samlsp/saml_sp_act" -metadataRefreshInterval 1

  3. 配置 SAML 身份验证策略并将 SAML IdP 配置文件关联为策略的操作。

    add authentication samlIdPPolicy samlIDPPol1 -rule true -action samlIDPProf1

    注意:

    如果策略名称包含一个或多个空格,请将名称用双引号或单引号括起来(例如,“我的策略”或“我的策略”)。

  4. 将策略绑定到身份验证虚拟服务器。

    bind authentication vserver saml-auth-vserver -policy samlIDPPol1 -priority 100

    有关该命令的更多详细信息,请参阅 https://developer-docs.citrix.com/projects/citrix-adc-command-reference/en/latest/authentication/authentication-samlIdPProfile

使用 GUI 将 NetScaler 设备配置为 SAML IdP

  1. 配置 SAML IdP 配置文件。此配置文件用于验证来自 SP 的传入身份验证请求,并在将声明发送到 SP 之前创建并签署声明。

    导航到“安全”>“AAA-应用程序流量”>“策略”>“身份验证高级策略”>“SAML IDP 策略”。

    选择“服务器”,单击“添加”,输入以下参数的值,然后单击“创建”。

    参数描述:

    • 名称-新 SAML 单点登录配置文件的名称。

    • 导出 SAML IDP 元数据-如果要将 SAML IdP 配置文件的元数据导出到 NetScaler Gateway VPN 虚拟服务器,请单击此链接。

    • 导入元数据-此选项导入 SAML IdP 元数据。默认情况下启用此选项。

    • 断言使用者服务 URL-断言要发送到的 URL。

    • 服务提供者注销 URL-要向其发送注销消息的 SP 端点。

    • 注销绑定-指定 SAML 注销消息的传输机制。可用选项有 POST 和重定向。

    • SAML SP 元数据 URL — 用于获取 SAML IdP 元数据的 URL。

      注意:

      配置 SAML SP 元数据 URL 后,以下参数取自 SAML IdP 配置文件,并在 SAML SP 配置中自动填充:

      • 断言消费者服务 URL
      • 服务提供商注销 URL
      • SP 证书名称
      • 注销绑定
      • SAML 绑定
      • 签名断言
    • 元数据刷新间隔 (分钟) - 从指定元数据 URL 获取元数据的时间间隔(以分钟为单位)。默认时间间隔为 3600 分钟。

    • 断言使用者服务 URL 规则 - 定义允许的来自 SAML SP 的 ACS URL 的表达式。换句话说,它允许列出 ACS URL 以防止在 SAML 请求中插入恶意 ACS URL 的攻击。

    • 断言消费者服务 URL-经过身份验证的用户被重定向到的 URL。

    • IdP 证书名称-用于身份验证页面的证书密钥对。

    • SP 证书名称-服务提供商的证书在这种情况下,这不需要密钥。

    • 签名断言- 在将客户端重定向回服务提供商时对断言和响应进行签名的选项。

    • 颁发者名称-IdP 发出的 SAML 断言中包含的字符串值。

    • 服务提供商 ID-在 SP 上指定的用于帮助识别服务提供商的唯一 ID。ID 可以是任何东西,不一定是 URL。但是 SP 和 IdP 配置文件上的 ID 必须相同。

    • 默认身份验证组 - 除提取的组外,身份验证成功时选择的默认组。该组对于使用 nFactor 流程为中继方决定适当配置的管理员很有用。例如,在配置身份验证策略时,可以将默认组名指定为以下表达式的一部分:

      AAA.USER.IS_MEMBER_OF("Default Authentication Group name").

    • 拒绝未签名的请求 - 您可以指定该选项以确保仅接受使用 SP 证书签名的断言。

    • 受众 - IdP 向其发送断言的受众。这通常是实体名称或代表 SP 的 URL。

    • 偏移时间 (分钟) - 偏移时间 (分钟) - 此选项指定 NetScaler 服务提供商在传入断言时允许的时钟偏差(以分钟为单位)。例如,如果您在 16:00 将偏移时间设置为 10 分钟,则 SAML 断言的有效期为 15:50 到 16:10,总共为 20 分钟。默认偏移时间为 5 分钟。

    • 名称 ID 格式-断言中发送的名称标识符的格式。

    • 名称 ID 表达式-通过求值获得要在断言中发送的名称标识符的表达式。

    • 对断言进行签名-可选择对 IdP 发送的部分断言进行签名。可用选项为“无”、“断言”、“响应”或“两者”。

    • 签名算法-用于对 IdP 和 SP 之间的断言进行签名和验证的算法,IdP 配置文件和 SP 配置文件必须相同。

    • 摘要方法-用于验证 IdP 和 SP 之间断言完整性的算法,IdP 配置文件和 SP 配置文件必须相同。

    • SAML 绑定 - 一种用于在 SP 和 IdP 之间传输 SAML 请求者和响应者消息的机制。当 NetScaler 充当 SP 时,它支持发布、重定向和构件绑定。默认的绑定方法是 POST。将 SAML IdP 策略与身份验证虚拟服务器关联。对于构件绑定,SP 和 IdP 上的传输机制必须相同。

    • 属性 1-SAML 断言中属性的名称,其值必须提取并存储为属性 1。类似的模式也适用于其余属性。

    • Attribute1Expr - 通过评估获得属性 1 的值的表达式。

    • Attribute1FriendlyName - 必须在 SAML 断言中发送的属性 1 的名称。

    • Attribute1Format - 要在 SAML 断言中发送的属性 1 的格式。

  2. 配置 SAML 身份验证策略并将 SAML IdP 配置文件关联为策略的操作。

    导航到“安全”>“AAA-应用程序流量”>“策略”>“身份验证高级策略”>“SAML IDP 策略”。

    选择“策略”,单击“添加”,输入以下参数的值,然后单击“创建”。

    参数描述:

    • 名称 - SAML IdP 身份验证策略的名称。

    • 操作-适用于与此策略匹配的请求或连接的 SAML IdP 配置文件的名称。

    • 日志操作 -请求与此策略匹配时使用的消息日志操作的名称。从下拉列表中选择一个日志操作,或者通过单击“添加”来创建日志操作。

    • 未定义结果操作-策略评估结果未定义时要执行的操作。未定义的事件表示内部错误情况。只能使用内置操作。

    • 评论 - 任何用于保留本策略相关信息的评论。

  3. 将 SAML IdP 策略与身份验证虚拟服务器关联。

    导航到“安全”>“AAA-应用程序流量”>“虚拟服务器”,然后将 SAML IdP 策略与身份验证虚拟服务器绑定。

NetScaler 作为 SAML IdP