Citrix ADC

Citrix ADC 作为 OAuth IdP

现在可以使用 OpenID 连接 (OIDC) 协议将 Citrix ADC 设备配置为身份提供程序。OIDC 协议增强了 Citrix ADC 设备的身份提供功能。现在,您可以通过单点登录访问企业范围的托管应用程序,因为 OIDC 不传输用户密码,而是使用具有特定生命周期的令牌,从而提供更高的安全性。OpenID 还旨在与非浏览器客户端(如应用程序和服务)集成。因此,OIDC 协议被许多实现广泛采用。

注意

Citrix ADC 必须在版本 12.1 或更高版本上,设备才能使用 OIDC 协议作为 OAuth IdP 运行。

将 Citrix ADC 作为 OAuth IdP 的优势

  • 消除了维护多个身份验证密码的开销,因为用户在整个组织中具有单一身份。
  • 为密码提供了强大的安全性,因为密码仅与身份提供商共享,而不是与您访问的任何应用程序共享。
  • 提供了与各种系统的巨大互操作性,使托管应用程序更容易接受 OpenID。

注意

Citrix ADC 高级版及更高版本才能使解决方案工作。

使用 GUI 将 Citrix ADC 设备配置为 OAuth IdP 的步骤

  1. 导航到配置 > 安全 > AAA-应用程序流量 > 策略 > 身份验证 > 高级策略 > OAuth IdP

  2. 单击 配置文件 ,然后单击 添加。

    在“创建身份验证 OAuth IDP 配置文件”屏幕上,设置以下参数的值,然后单击“创建”。

    • 名称 — 身份验证配置文件的名称。必须以字母、数字或下划线字符 (_) 开头,并且必须仅包含字母、数字和连字符 (-)、句点 (.) (#)、空格 ()、位于 (@)、equals (=)、冒号 (:) 和下划线字符。创建配置文件后无法更改。

    • 客户端 ID — 标识 SP 的唯一字符串。授权服务器使用此 ID 推断客户端配置。最大长度:127。
    • 客户端密码 — 由用户和授权服务器建立的密码字符串。最大长度:239。
    • 重定向 URL -SP 上的端点必须发布代码/令牌。
    • 颁发者名称 — 要接受其令牌的服务器的标 识。最大长度:127。
    • 受众 — IdP 发送令牌的目标收件人。这可能由收件人检查。
    • 倾斜时间 — 此选项指定 Citrix ADC 在传入令牌上允许的时钟偏斜(以分钟为单位)。例如,如果 SkewTime 为 10,则令牌的有效期为(当前时间-10)分钟到(当前时间 + 10)分钟,即总共 20 分钟。默认值:5。
    • 默认身份验证组 — IdP 选择此配置文件时添加到会话内部分组列表中的组,可在 nFactor 流中使用。它可以在表达式 (AAA.USER.IS_MEMBER_Of (“xxx”) 中使用,以实现身份验证策略 识别与信赖方相关的 nFactor 流。最大长度:63

    向此配置文件的会话中添加了一个组,以简化策略评估并帮助自定义策略。除了提取的组之外,这是当真实的组成功时选择的默认组。最大长度:63。

  3. 单击 策略 ,然后单击 添加。

  4. 在“创建身份验证 OAuth IDP 策略”屏幕上,设置以下参数的值,然后单击“创建”。

    • 名称 — 身份验证策略的名称。
    • 操作 — 上面创建的配置文件的名称。
    • 日志操作 — 请求与此策略匹配时使用的消息日志操作的名称。不是强制性的提交。
    • 未确定的成果操作 — — 如果策略评价结果不可否认,应采取的操作 (UNDEF)。不是必填字段。
    • 表达式 — 策略用于响应特定请求的默认语法表达式。例如,true。
    • 注释 — 有关策略的任何注释。

将 OAuthIDP 策略和 LDAP 策略绑定到身份验证虚拟服务器

  1. 导航到配置 > 安全 > AAA-应用程序流量 > 策略 > 身份验证 > 高级策略 > 操作 > LDAP

  2. LDAP 操作屏幕上,单击添加

  3. 在“创建身份验证 LDAP 服务器”屏幕上,设置以下参数的值,然后单击“创建”。

    • 名称 — ldap 操作的名称
    • ServerName/ServerIP — 提供 LDAP 服务器的 FQDN 或 IP
    • 为安全类型、端口、服务器类型、超时选择合适的值
    • 确保选中身份验证
    • 基础 DN — 从中开始 LDAP 搜索的基础。例如,dc = aaa,dc = 本地。
    • 管理员绑定 DN: 绑定到 LDAP 服务器的用户名。例如, admin@aaa.local。
    • 管理员密码/确认密码:绑定 LDAP 的密码
    • 单击测试连接以测试您的设置。
    • 服务器登录名属性: 选择“sAMAccountName
    • 其他字段不是必填字段,因此可以根据需要进行配置。
  4. 导航到配置 > 安全性 > AAA 应用程序流量 > 策略 > 身份验证 > 高级策略 > 策略。

  5. 在“身份验证策略”屏幕上,单击“添加”。

  6. 在“创建身份验证策略”页上,设置以下参数的值,然后单击“创建”。

    • 名称 — LDAP 身份验证策略的名称。
    • 操作类型 — 选择 LDAP。
    • 操作 — 选择 LDAP 操作。
    • 表达式 — 策略用于响应特定请求的默认语法表达式。例如,true**。

OAuth 功能现在支持令牌 API 中从信赖方 (RP) 端以及 Citrix Gateway 和 Citrix ADC 的 IdP 端的以下功能。

  • PKCE(代码交换的证明密钥)支持

  • 支持 client_assertion

使用带有命令行的 OIDC 协议将 Citrix ADC 设备配置为 IdP 的步骤

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

  • add authentication OAuthIDPProfile <name> [-clientID <string>][-clientSecret ][-redirectURL <URL>][-issuer <string>][-audience <string>][-skewTime <mins>] [-defaultAuthenticationGroup <string>]
  • add authentication OAuthIdPPolicy <name> -rule <expression> [-action <string> [-undefAction <string>] [-comment <string>][-logAction <string>]

  • add authentication ldapAction aaa-ldap-act -serverIP 10.0.0.10 -ldapBase "dc=aaa,dc=local"

  • ldapBindDn <administrator@aaa.local> -ldapBindDnPassword <password> -ldapLoginName sAMAccountName

  • add authentication policy aaa-ldap-adv-pol -rule true -action aaa-ldap-act

  • bind authentication vserver auth_vs -policy <ldap_policy_name> -priority 100 -gotoPriorityExpression NEXT

  • bind authentication vserver auth_vs -policy <OAuthIDPPolicyName> -priority 5 -gotoPriorityExpression END

  • bind vpn global –certkey <>

注意

您可以绑定多个键。发送绑定的证书的公共部分以响应 jwks\_uri query (https://gw/oauth/idp/certs)

OIDC 协议上的加密令牌支持

采用 OIDC 机制的 Citrix ADC 设备现在支持发送加密令牌和签名令牌。Citrix ADC 设备使用 JSON Web 加密规范来计算加密令牌,并且仅支持加密令牌的紧凑序列化。要加密 OpenID 令牌,Citrix ADC 设备需要信赖方 (RP) 的公钥。通过轮询信赖方的已知配置端点来动态获取公钥。

在“”authentication OAuthIDPProfile”中引入了一个新的“relyingPartyMetadataURL”选项。配置文件。

使用 CLI 配置信赖方的端点

在命令提示符下,键入:

set authentication OAuthIDPProfile <name> [-relyingPartyMetadataURL <URL>] [-refreshInterval <mins>] [-status < >]

  • 关联方元数据 URL -端点,Citrix ADC IdP 可以在此端点获取有关正在配置的信赖方的详细信息。元数据响应必须包括用于 RP 公钥的 jwks_uri 的端点。

  • refreshInterval -定义必须轮询此端点才能更新证书(以分钟为单位)的速率。

  • status -反映轮询操作的状态。Citrix ADC 设备成功获取公钥后,状态将完成。

    示例

    set authentication OAuthIDPProfile sample_profile -relyingPartyMetadataURL https://rp.customer.com/metadata -refreshInterval 50 -status < >
    

配置端点后,Citrix ADC 设备首先轮询信赖方的已知端点以读取配置。目前,Citrix ADC 设备仅处理“jwks_uri”端点。

  • 如果响应中没有“jwks_uri”,则配置文件的状态不完整。
  • 如果响应中存在“jwks_uri”,Citrix ADC 将轮询该端点以读取信赖方的公钥。

注意: 令牌加密仅支持 RSAES-OAEP 和 AES GCM 加密类型算法。

OpenID 连接上的自定义属性支持

OpenID 依赖方在令牌中可能需要多个用户名或用户主体名称 (UPN) 才能创建用户配置文件或作出授权决策。最常见的情况是,用户组需要为用户应用授权策略。有时,Provisioning 用户帐户需要更多详细信息(如名字或姓氏)。

配置为 IdP 的 Citrix ADC 设备可用于使用表达式在 OIDCID_Token 中发送额外的属性。高级策略表达式用于根据要求发送自定义属性。Citrix IdP 评估与属性对应的表达式,然后计算最终令牌。

Citrix ADC 设备自动对输出数据进行 JSONify。例如,数字(如 SSN)或布尔值(true 或 false)不用引号括起来。多值属性(如组)放置在数组标记 (”[” 和 “]“) 中。复杂类型属性不会自动计算,您可以根据您的要求配置这些复杂值的 PI 表达式。

使用 CLI 配置信赖方的端点

在命令提示符下,键入:

set oauthidpprofile <name> -attributes <AAA-custom-attribute-pattern>

<AAA-custom-attribute-pattern> 可以描述为:

Attribute1=PI-Expression@@@attribute2=PI-Expression@@@

‘attribute1’,’attribute2’ 是文字字符串,表示要在 id_token 中插入的属性的名称。

注意: 您最多可以配置 2,000 个字节的属性。

示例: set oauthidpprofile sample_1 -attributes q{myname=http.req.user.name@@@ssn="123456789"@@@jit="false"@@@groups=http.req.user.groups}

  • 前面的 PI 表达式是一个高级策略表达式,表示要对属性使用的值。PI 表达式可用于发送字符串文字,例如“’硬编码字符串”’。字符串文字由单引号或双引号括起始和模式周围的双引号括起始(如前所述,开始模式为“q {”)。如果属性的值不是字符串文字,则会在运行时对表达式进行评估,并以令牌形式发送其值。如果运行时的值为空,则不会将相应的属性添加到 ID 令牌中。
  • 如示例中所定义的,“false”是属性“jit”的文字字符串。另外,“ssn”具有硬编码值供参考。组和“myname”是产生字符串的 PI 表达式。

支持 Citrix Gateway 上的主动-主动 GSLB 部署

使用 OIDC 协议配置为身份提供程序 (IdP) 的 Citrix Gateway 可以支持主动-主动 GSLB 部署。Citrix Gateway IdP 上的主动-主动 GSLB 部署提供了跨多个地理位置对传入的用户登录请求进行负载平衡的功能。

重要

Citrix 建议您将 CA 证书绑定到 SSL 服务,并在 SSL 服务上启用证书验证,以增强安全性。

有关配置 GSLB 设置的详细信息,请参阅 GSLB 设置和配置示例

Citrix ADC 作为 OAuth IdP