ADC

Citrix ADC 作为 SAML SP

SAML 服务提供商 (SP) 是由服务提供商部署的 SAML 实体。当用户尝试访问受保护的应用程序时,SP 将评估客户端请求。如果客户端未经身份验证(没有有效的 NSC_TMAA 或 NSC_TMAS cookie),SP 会将请求重定向到 SAML 身份提供程序 (IdP)。

SP 还会验证从 IdP 收到的 SAML 断言。

当 Citrix ADC 设备配置为 SP 时,流量管理虚拟服务器(负载平衡或内容交换)会接收与相关 SAML 操作关联的所有用户请求。

Citrix ADC 设备还支持在注销期间执行 POST 和重定向绑定操作。

注意

Citrix ADC 设备可以在设备或任何外部 SAML IdP 上配置了 SAML IdP 的部署中用作 SAML SP。

用作 SAML SP 时,Citrix ADC 设备:

  • 可以从 SAML 令牌中提取用户信息(属性)。随后可以在 Citrix ADC 设备上配置的策略中使用此信息。例如,如果要提取 GroupMember 和 emailaddress 属性,请在 SAMLAction 中指定 Attribute2 参数为 GroupMember,指定 Attribute3 参数为 emailaddress。

    注意

    不得在属性 1-16 中提取默认属性,例如用户名、密码和注销 URL,因为它们会在会话中隐式解析和存储。

  • 可以从传入 SAML 断言中提取最多 127 个字节的属性名称。之前的限制是 63 个字节。

  • 支持发布、重定向和伪影绑定。

    注意

    当膨胀或解码后的断言大于 10K 时,不要对大量数据使用重定向绑定。

  • 可以解密断言。

  • 可以从 SAML 断言中提取多值属性。发送的这些属性是嵌套的 XML 标记,例如:

    <AttributeValue> <AttributeValue>Value1</AttributeValue> <AttributeValue>Value2</AttributeValue> \</AttributeValue\>

    注意

    在 Citrix ADC 13.0 Build 63.x 及更高版本中,SAML 属性的单个最大长度已增加到允许的最大长度为 40k 字节。所有属性的大小不得超过 40k 字节。

    在提供之前的 XML 时,Citrix ADC 设备可以将 Value1 和 Value2 作为给定属性的值提取,与仅提取 Value1 的旧固件相反。

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

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

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

  • 可以在身份验证请求中向外部 IdP(身份提供程序)发送名为“ForceAuth”的额外属性。默认情况下,ForceAuthn 设置为“False”。可以将其设置为“True”以建议 IdP 在存在身份验证上下文的情况下强制进行身份验证。此外,当配置了构件绑定时,Citrix ADC SP 会在查询参数中发送身份验证请求。

使用 CLI 将 Citrix ADC 设备配置为 SAML SP

  1. 配置 SAML SP 操作。

    示例

    以下命令添加了一项 SAML 操作,用于重定向未经身份验证的用户请求。

    add authentication samlAction SamlSPAct1 -metadataUrl "https://ksidp1.ksaaa.local/metadata/samlidp/SAML_IDP_profile" -samlIdPCertName nssp -samlSigningCertName nssp –samlRedirectUrl https://auth1.example.com -relaystateRule "AAA.LOGIN.RELAYSTATE.EQ(\"https://lb.example1.com/\")"

    注意事项

    • 为 samlAction 命令中的 -samlIdPCertName 提供的证书必须与来自 IdP 的相应证书匹配才能成功验证签名。
    • SAML 仅支持 RSA 证书。不支持 HSM、FIPS 等其他证书。
    • 建议在表达式中使用带有“/”结尾的完整域名。
    • 管理员必须在 samlAction 命令中为 relaysStateRule 配置表达式。表达式必须包含用户连接到的已发布域的列表,然后再重定向到身份验证虚拟服务器。例如,表达式必须包含使用此 SAML 操作进行身份验证的前端虚拟服务器(VPN、LB 或 CS)的域。
    • 如果将身份验证虚拟服务器配置为 SAML IdP,则必须在 SAML SP 操作中使用的元数据 URL 为 https://<citrix-adc-saml-idp-fqdn>/metadata/samlidp/SAML_IDP_profile

    注意

    如果 IdP 链中有多个 SAML 策略,则仅在第一个 SAML 策略上配置中继状态规则就足够了。

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

  2. 配置 SAML 策略。

    示例

    以下命令定义了一个 SAML 策略,该策略将先前定义的 SAML 操作应用于所有流量。

    add authentication policy SamlSPPol1 -rule true -action SamlSPAct1

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

    示例

    以下命令将 SAML 策略绑定到名为“av_saml”的身份验证虚拟服务器。

    bind authentication vserver av_saml -policy SamlSPPol1

  4. 将身份验证虚拟服务器绑定到相应的流量管理虚拟服务器。

    示例

    以下命令将添加名为“lb1_ssl”的负载平衡虚拟服务器,并将名为“av_saml”的身份验证虚拟服务器关联到负载平衡虚拟服务器。 add lb vserver lb1_ssl SSL 10.217.28.224 443 -persistenceType NONE -cltTimeout 180 -AuthenticationHost auth1.example.com -Authentication ON -authnVsName av_saml

    有关该命令的更多详细信息,请参阅 https://developer-docs.netscaler.com/en-us/adc-command-reference-int/current-release/authentication/authentication-samlaction

使用 GUI 将 Citrix ADC 设备配置为 SAML SP

  1. 导航到 安全 > AAA 策略 > 身份验证 > 基本策略 >SAML

  2. 选择 服务器 选项卡,单击 添加,输入以下参数的值,然后单击 创建

    参数描述:

    • 名称-服务器的名称

    • 重定向 URL - 用户进行身份验证所依据的 URL。除非在 SAML 设置下,某些 IdP 具有无法访问的特殊 URL。

    • 单个注销 URL-指定的 URL,以便 Citrix ADC 可以识别何时将客户端发送回 IdP 以完成注销过程。我们不会在这个简单的部署中使用它。

    • SAML 绑定 - 一种用于在 SP 和 IdP 之间传输 SAML 请求者和响应者消息的机制。当 Citrix ADC 充当 SP 时,它支持发布、重定向和构件绑定。默认的绑定方法是 POST。

      注意:

      对于构件绑定,SP 和 IdP 上的传输机制必须相同。

    • 注销绑定-指定 SAML 注销消息的传输机制。默认的绑定机制是 Post。

    • IDP 证书名称 - SAML 签名证书下存在的 IdPCert 证书 (Base64)。

    • 用户字段 - IdP 的 SAML 身份验证表单的部分,其中包含 SP 在必要时提取的用户名。

    • 签名证书名称-选择 Citrix ADC 用于对 IdP 的身份验证请求签名的 SAML SP 证书(带私钥)。必须将相同的证书(不带私钥)导入到 IdP,以便 IdP 可以验证身份验证请求签名。大多数 IdP 不需要签名证书名称。

    • 发行者名称 -标识符。在 SP 和 IdP 上指定的唯一 ID,用于帮助相互识别服务提供商。

    • 拒绝未签名的断言 - 如果需要对来自 IdP 的断言进行签名,则可以指定该选项。默认选项为开。
      • 开:拒绝没有签名的断言
      • 严格:确保响应和断言均已签名
      • 关:允许未签名的断言
    • Audience(受众)- IdP 发送的断言适用的受众。这通常是实体名称或代表服务提供商的 URL。

    • 签名算法 - 用于签名/验证 SAML 事务的算法。默认值为 RSA-SHA256。

    • 摘要方法 - 用于计算/验证 SAML 事务摘要的算法。默认值为 SHA256。

    • 默认身份验证组-除了提取的组外,身份验证成功时选择的默认组。

    • 组名称字段 - 包含用户组的断言中标记的名称。

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

    导航到“安全”>“AAA 应用程序流量”>“策略”>“身份验证”>“高级策略”>“策略”,然后单击“添加”。

    创建身份验证 SAML 策略 页面上,提供以下详细信息:

    • 名称 - 指定 SAML 策略的名称。
    • 操作类型-选择 SAML 作为身份验证操作类型。
    • 操作 - 选择要绑定 SAML 策略的 SAML 服务器配置文件。
    • 表达式 - 显示规则或表达式的名称,SAML 策略使用该规则或表达式来确定用户是否必须通过 SAML 服务器进行身份验证。在文本框中,设置值“rule = true”以使 SAML 策略生效并运行相应的 SAML 操作。
  4. 将 SAML 策略绑定到身份验证虚拟服务器。

    导航到 Security(安全)> AAA - Application Traffic(AAA - 应用程序流量)> Virtual Servers(虚拟服务器),然后将 SAML 策略与身份验证虚拟服务器相关联。

  5. 将身份验证服务器与相应的流量管理虚拟服务器关联。

    导航到 Traffic Management(流量管理)> Load Balancing(负载平衡)(或 Content Switching(内容交换))> Virtual Servers(虚拟服务器)中,选择虚拟服务器,然后将身份验证虚拟服务器与其关联。

Citrix ADC 作为 SAML SP