Citrix ADC 作为 SAML IdP
SAML IdP(身份提供程序)是部署在客户网络中的 SAML 实体。IdP 接收来自 SAML SP 的请求,并将用户重定向到登录页面,用户必须在登录页面中输入凭据。IdP 通过 Active Directory(外部身份验证服务器,例如 LDAP)对这些凭据进行身份验证,然后生成发送到 SP 的 SAML 断言。
SP 验证令牌,然后授予用户对请求的受保护应用程序的访问权限。
将 Citrix ADC 设备配置为 IdP 时,与相关 SAML IdP 配置文件关联的身份验证虚拟服务器将接收所有请求。
注意
Citrix ADC 设备可以在设备上或任何外部 SAML SP 上配置了 SAML SP 的部署中用作 IdP。
用作 SAML IdP 时,Citrix ADC 设备:
-
支持能够支持传统登录的所有身份验证方法。
-
以数字方式签署断言。
-
支持单重身份验证和双重身份验证。不得将 SAML 配置为辅助身份验证机制。
-
可以使用 SAML SP 的公钥加密断言。当断言包含敏感信息时,建议执行此操作。
-
可以配置为仅接受来自 SAML SP 的数字签名请求。
-
可以使用以下基于 401 的身份验证机制登录 SAML IdP:协商、NTLM 和证书。
-
除了 NameId 属性外,还可以配置为发送 16 个属性。必须从相应的身份验证服务器中提取属性。对于其中的每个人,您可以在 SAML IdP 配置文件中指定名称、表达式、格式和友好名称。
-
如果 Citrix ADC 设备配置为多个 SAML SP 的 SAML IdP,用户无需每次进行显式身份验证即可访问不同 SP 上的应用程序。Citrix ADC 设备为第一次身份验证创建会话 cookie,后续的每个请求都使用此 cookie 进行身份验证。
-
可以在 SAML 断言中发送多值属性。
-
支持发布和重定向绑定。Citrix ADC 13.0 Build 36.27 中引入了对项目绑定的支持。
-
可以指定 SAML 断言的有效性。
如果 Citrix ADC SAML IdP 上的系统时间与对等 SAML SP 上的系统时间不同步,则消息可能会被任何一方失效。为了避免此类情况,您现在可以配置断言有效的持续时间。
此持续时间称为“倾斜时间”,指定必须接受消息的分钟数。可以在 SAML SP 和 SAML IdP 上配置倾斜时间。
-
可以配置为仅向在 IdP 上预配置的或信任的 SAML SP 提供断言。对于此配置,SAML IdP 必须具有相关 SAML SP 的服务提供商 ID(或颁发者名称)。
注意
-
在继续操作之前,请确保您的身份验证策略已绑定到 LDAP 身份验证虚拟服务器。
-
有关如何配置 LDAP 操作以检索所需属性的详细信息,请参阅 LDAP 身份验证的名称-值属性支持。
-
使用 CLI 将 Citrix ADC 设备配置为 SAML IdP
-
配置 SAML IdP 配置文件。
示例
将 Citrix ADC 设备添加为 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$#)
-
配置 SAML IdP 配置文件。在以下示例中,IdP 会话包含“userPrincipalName”属性。
set samlidPProfile SAML-IDP-Profile -Attribute1 "userPrincipalName" -Attribute1Expr "AAA.USER.ATTRIBUTE(\"userPrincipalName\")"
注意事项
-
在 SAML IdP 配置文件中,配置 acsURLRule,该 acsURLRule 采用此 IdP 的适用服务提供商 URL 列表的表达式。此表达式取决于正在使用的 SP。如果 Citrix ADC 配置为 SP,则 ACS URL 为
https://<SP-domain_name>/cgi/samlauth
。Citrix 建议在表达式中包含完整 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,请使用以下命令:
以下 CLI 示例使用
{"https://testlb.aaa.local", "https://testav.aaa.local"}
作为一组 ACS URL:add patset saml_acsUrl bind patset saml_acsUrl https://testlb.aaa.local bind patset saml_acsUrl https://testav.aaa.local set samlidpprofile SAML_IDP_profile -acsurlrule "AAA.LOGIN.SAML_REQ_ACS_URL.contains_any("saml_acsUrl")" <!--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
。正则表达式开头的“^”符号确保 Citrix ADC 不允许“https”之前的任何内容。正则表达式末尾的“$”符号确保 Citrix ADC 在“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-samlAction 和 https://support.citrix.com/article/CTX316577。
-
如果 IdP 注销 URL 与重定向 URL 不同且用户在 Citrix ADC 登录页面上停留的时间超过 2 分钟,则当用户尝试进行身份验证时会出现服务器错误
HTTP/1.1 Internal Server Error 43549
。Citrix ADC 日志显示一条消息,表明传入的帖子注销重定向 URL 不在用户的白名单注销重定向 URL 中。要解决此问题,请绑定模式集,如以下示例所示:
bind patset ns_aaa_oauthidp_logout_redirect_uris "https://FQDN and path to the logout url"
-
如果将身份验证虚拟服务器配置为 SAML SP,则必须在 SAML IdP 配置文件中使用的元数据 URL 为
https://<citrix-adc-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
-
-
配置 SAML 身份验证策略并将 SAML IdP 配置文件关联为策略的操作。
add authentication samlIdPPolicy samlIDPPol1 -rule true -action samlIDPProf1
注意:
如果策略名称包含一个或多个空格,请将名称用双引号或单引号括起来(例如,”my policy” 或 ‘my policy’)。
-
将策略绑定到身份验证虚拟服务器。
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 将 Citrix ADC 设备配置为 SAML IdP
-
配置 SAML IdP 配置文件。此配置文件用于验证来自 SP 的传入身份验证请求,并在将声明发送到 SP 之前创建并签署声明。
导航到“安全”>“AAA-应用程序流量”>“策略”>“身份验证高级策略”>“SAML IDP 策略”。
选择“服务器”,单击“添加”,输入以下参数的值,然后单击“创建”。
参数描述:
-
名称-新 SAML 单点登录配置文件的名称。
-
导出 SAML IDP 元数据-如果要将 SAML IdP 配置文件的元数据导出到 Citrix 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。
-
偏移时间 (分钟) - 偏移时间 (分钟) - 此选项指定 Citrix ADC 服务提供商在传入断言时允许的时钟偏差(以分钟为单位)。例如,如果您在 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 请求者和响应者消息的机制。当 Citrix ADC 充当 SP 时,它支持发布、重定向和构件绑定。默认的绑定方法是 POST。将 SAML IdP 策略与身份验证虚拟服务器关联。对于构件绑定,SP 和 IdP 上的传输机制必须相同。
-
属性 1-SAML 断言中属性的名称,其值必须提取并存储为属性 1。类似的模式也适用于其余属性。
-
Attribute1Expr - 通过评估获得属性 1 的值的表达式。
-
Attribute1FriendlyName - 必须在 SAML 断言中发送的属性 1 的名称。
-
Attribute1Format - 要在 SAML 断言中发送的属性 1 的格式。
-
-
配置 SAML 身份验证策略并将 SAML IdP 配置文件关联为策略的操作。
导航到“安全”>“AAA-应用程序流量”>“策略”>“身份验证高级策略”>“SAML IDP 策略”。
选择“策略”,单击“添加”,输入以下参数的值,然后单击“创建”。
参数描述:
-
名称 - SAML IdP 身份验证策略的名称。
-
操作-适用于与此策略匹配的请求或连接的 SAML IdP 配置文件的名称。
-
日志操作 -请求与此策略匹配时使用的消息日志操作的名称。从下拉列表中选择一个日志操作,或者通过单击“添加”来创建日志操作。
-
未定义结果操作-策略评估结果未定义时要执行的操作。未定义的事件表示内部错误情况。只能使用内置操作。
-
评论 - 任何用于保留本策略相关信息的评论。
-
-
将 SAML IdP 策略与身份验证虚拟服务器关联。
导航到“安全”>“AAA-应用程序流量”>“虚拟服务器”,然后将 SAML IdP 策略与身份验证虚拟服务器绑定。