配置 OpenID 连接协议

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

拥有 OpenID 连接支持的优势

  • OpenID 消除了维护多个身份验证密码的开销,因为用户在组织中具有单个身份。
  • OpenID 为您的密码提供了强大的安全性,因为密码仅与您的身份提供商共享,而不与您访问的任何应用程序共享。
  • OpenID 与各种系统具有广泛的互操作性,使托管应用程序更容易接受 OpenID。
  • OpenID 是一个简单的协议,使本机客户端能够轻松地与服务器集成。

使用带 GUI 的 OpenID 连接协议将 Citrix ADC 设备配置为 IdP

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

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

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

    • 名称 — 身份验证配置文件的名称。
    • 客户端 ID — 标识 SP 的唯一字符串。
    • 客户端秘密 — 标识 SP 的唯一秘密。
    • 重定向 URL -SP 上的端点必须发布代码/令牌。
    • 颁发者名称 — 标识 IdP 的 字符串。
    • 受众 — IdP 发送令牌的目标收件人。这可能会由 收件人检查。
    • 偏斜时间 — 令牌保持有效的时间。
    • 默认身份验证组 — 为此配置文件添加到会话的组, 以简化策略评估并帮助自定义策略。
  3. 单击策略,然后单击添加

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

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

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

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

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

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

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

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

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

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

使用带有命令行的 OpenID 连接协议将 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)

OpenID 连接上的加密令牌支持

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

在“验证 OAuthid 配置文件”中引入了一个新的“关注当事方元数据 URL”选项。“

使用 CLI 配置信赖方的端点

在命令提示窗口中,键入:

set authentication OAuthIDPProfile <name> [-relyingPartyMetadataURL <URL>] [-refreshInterval <mins>] [-status < >]
  • relyingPartyMetadataURL -这是 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) 以创建用户配置文件或做出授权决策。最常见的情况是,用户组需要为用户应用授权策略。有时,预配用户帐户需要更多详细信息,例如名字或姓氏。

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

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

使用 CLI 配置信赖方的端点

在命令提示窗口中,键入:

<AAA-custom-attribute-pattern>设置自定义配置文件 <name>-属性

<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 表达式。