Citrix ADC

OAuth 身份验证

身份验证、授权和审核流量管理功能支持 OAuth 和 OpenID Connect (OIDC) 身份验证。它授权用户使用 Google、Facebook 和 Twitter 等应用程序上托管的服务并对其进行身份验证。

注意事项

  • 要使解决方案正常运行,需要 Citrix ADC Advanced Edition 及更高版本。
  • Citrix ADC 设备必须位于版本 12.1 或更高版本上,设备才能使用 OIDC 作为 OAuth IdP 运行。
  • Citrix ADC 设备上的 OAuth 适用于符合“OpenID Connect 2.0”的所有 SAML IdP。

可以使用 SAML 和 OIDC 将 Citrix ADC 设备配置为行为与服务提供程序 (SP) 或身份提供程序 (IdP) 一致。以前,配置为 IdP 的 Citrix ADC 设备仅支持 SAML 协议。自 Citrix ADC 12.1 版本起,Citrix ADC 也支持 OIDC。

OIDC 是 OAuth 授权/委托的延伸。Citrix ADC 设备在同一类别的其他身份验证机制中支持 OAuth 和 OIDC 协议。OIDC 是 OAuth 的加载项,因为它提供了一种从授权服务器获取用户信息的方法,而 OAuth 仅获取无法收集用户信息的令牌。

身份验证机制有助于 OpenID 令牌的内联验证。Citrix ADC 设备可配置为获取证书并验证令牌上的签名。

使用 OAuth 和 OIDC 机制的一个主要优势是用户信息不会发送到托管应用程序。因此,身份盗用的风险大大降低。

为身份验证、授权和审核配置的 Citrix ADC 设备现在接受使用 HMAC HS256 算法签名的传入令牌。此外,SAML 身份提供程序 (IdP) 的公钥是从文件中读取的,而非从 URL 端点学习。

在 Citrix ADC 实施中,通过身份验证、授权和审核流量管理虚拟服务器访问应用程序。因此,要配置 OAuth,您必须配置 OAuth 策略,然后该策略必须与身份验证、授权和审核流量管理虚拟服务器相关联。

配置 OpenID Connect 协议

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

获得 OpenID Connect 支持的优势

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

使用 GUI 通过 OpenID Connect 协议将 Citrix ADC 设备配置为 IdP

  1. 导航到 Configuration(配置)> Security(安全)> AAA - Application Traffic(AAA - 应用程序流量)> Policies(策略)> Authentication(身份验证)> Advanced Policies(高级策略)> OAuth IdP

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

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

    • Name(名称)- 身份验证配置文件的名称。
    • Client ID(客户端 ID)- 标识 SP 的唯一字符串。
    • Client Secret(客户端密钥)- 标识 SP 的唯一密钥。
    • Redirect URL(重定向 URL)- 必须向其发布代码/令牌的 SP 上的端点。
    • Issuer Name(颁发者名称)- 标识 IdP 的字符串。
    • Audience(受众)- IdP 发送的令牌的目标收件人。这可能会由收件人进行检查。
    • Skew Time(倾斜时间)- 令牌仍然有效的时间。
    • Default Authentication Group(默认身份验证组)- 为了简化策略评估过程并帮助自定义策略而添加到此配置文件的会话中的组。
  3. 单击 Policies(策略),然后单击 Add(添加)。

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

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

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

  1. 导航到 Configuration(配置)> Security(安全)> AAA - Application Traffic(AAA - 应用程序流量)> Advanced Policies (高级策略)> Actions(操作)> LDAP

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

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

    • Name(名称)- LDAP 服务器操作的名称
    • ServernName/serverIP(服务器名称/服务器 IP)- 提供 LDAP 服务器的 FQDN 或 IP
    • Security Type, Port, Server Type, Time-Out(安全类型、端口、服务器类型、超时)选择适当的值
    • 确保已选中 Authentication(身份验证)
    • Base DN(基础 DN)- 开始 LDAP 搜索的基础。例如,dc=aaa,dc=local。
    • Administrator Bind DN(管理员绑定 DN):绑定到 LDAP 服务器的用户名。例如,admin@aaa.local。
    • Administrator Password/Confirm Password(管理员密码/确认密码):用于绑定 LDAP 的密码
    • 单击 Test Connection(测试连接)测试您的设置。
    • Server Logon Name Attribute(服务器登录名属性):选择 sAMAccountName
    • 其他字段不是必填字段,因此可以根据需要进行配置。
  4. 导航到 Configuration(配置)> Security(安全)> AAA - Application Traffic(AAA - 应用程序流量)> Policies(策略)> Authentication(身份验证)> Advanced Policies (高级策略)> Policy(策略)。

  5. Authentication Policies(身份验证策略)屏幕上,单击 Add(添加)。

  6. Create Authentication Policy(创建身份验证策略)页面上,设置以下参数的值,然后单击 Create(创建)。

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

使用 CLI 通过 OpenID Connect 协议将 Citrix ADC 设备配置为 IdP

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

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

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

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

  • add authentication policy aaa-ldap-adv-pol -rule true -action aaa-ldap-act<!--NeedCopy-->

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

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

  • bind vpn global –certkey <><!--NeedCopy-->

注意

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

OAuth 身份验证