Citrix ADC

Citrix ADC作为OAuth国内流离失所者

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

注意

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

将Citrix ADC作为OAuth IdP的优势

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

注意

要使解决方案正常运行,需要Citrix ADC高级版及更高版本。

使用GUI将Citrix ADC设备配置为OAuth国内流离失所者

  1. 导航到配置(配置)>安全(安全)> AAA -应用程序流量(AAA -应用程序流量)>政策(策略)>认证(身份验证)>先进政策(高级策略)> OAuth国内流离失所者

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

    创建认证OAuth IDP配置文件(创建身份验证OAuth IDP配置文件)页面上,设置以下参数的值,然后单击创建(创建)。

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

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

    为此概要文件添加到会话中的组,以简化策略评估并帮助定制策略。这是authenticatiob成功时选择的默认组,以及提取的组。最大长度:63。

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

  4. 创建认证OAuth IDP策略(创建身份验证OAuth IDP策略)页面上,设置以下参数的值,然后单击创建(创建)。

    • 名称——身份验证策略的名称。
    • 操作——上面创建的配置文件的名称。
    • 日志操作——请求与此策略匹配时使用的消息日志操作的名称。非强制性提交。
    • Undefined-Result行动(未定义的结果操作)——策略评估结果未定义(UNDEF)时应执行的操作。非必填字段。
    • 表达式(表达式)- 策略用于响应特定请求的默认语法表达式。例如,真的。
    • 评论(评论)- 对策略的任何评论。

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

  1. 导航到配置(配置)>安全(安全)> AAA -应用程序流量(AAA -应用程序流量)>先进政策(高级策略)>行动(操作)> LDAP

  2. LDAP行动(LDAP操作)屏幕上,单击添加(添加)。

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

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

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

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

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

OAuth功能现在支持令牌API中来自信赖方(RP)端以及Citrix网关和Citrix ADC的国内流离失所者端的以下功能。

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

  • 支持client_assertion

使用带有命令行的OIDC协议将Citrix ADC设备配置为国内流离失所者

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

add认证OAuthIDPProfile  [-clientID ][-clientSecret][-redirectURL ][-issuer ][-audience ][-skewTime ] [-defaultAuthenticationGroup ] add认证OAuthIdPPolicy  -rule  [-action  [-undefAction ][-comment ][-logAction ] add认证OAuthIdPPolicy  -rule  [-action  [-undefAction authentication ldapAction aaa-ldap-act -serverIP 10.0.0.10 -ldapBase "dc=aaa,dc=local" ldapBindDn  -ldapBindDnPassword  - ldploginname sAMAccountName add authentication policy aaa-ldap- advp -pol -rule true -action aaa-ldap-act bind authentication vserver auth_vs -policy  -priority 100- gotopriityexpression NEXT绑定认证vserver auth_vs -policy  -priority 5 - gotopriityexpression END绑定vpn global -certkey <> 

注意

可以绑定多个密钥。绑定的证书的公共部分是为了响应jwks \ _uri查询(https://gw/oauth/idp/certs)

OIDC协议上的加密令牌支持

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

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

使用CLI配置信赖方的终端节点

在命令提示符下,键入:

“‘OAuthIDPProfile设置身份验证 [-relyingPartyMetadataURL ] [refreshinterval [-status < >]

- * * relyingPartyMetadataURL * * - c itrix ADC IdP可以通过该端点获取有关正在配置的信赖方的详细信息。元数据响应必须包括RP公钥的jwks_uri的终端节点。- * * refreshInterval * *定义必须轮询此终端节点才能在几分钟内更新证书的速率。- * *状态* *反映轮询操作的状态。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依赖方可能需要的不仅仅是令牌中的用户名或用户主体名称(隐喻)才能创建用户配置文件或做出授权决策。最常见的是,用户组需要为用户应用授权策略。有时,预配用户帐户需要更多详细信息,例如名字或姓氏。

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

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

使用CLI配置信赖方的终端节点

在命令提示符下,键入:

set oauthidpprofile  -attributes  

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

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

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

注意:您最多可以配置2000字节的属性。

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

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

支持Citrix网关上的主动——主动GSLB部署

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

重要

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

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

Citrix ADC作为OAuth国内流离失所者