This content has been machine translated dynamically.
Dieser Inhalt ist eine maschinelle Übersetzung, die dynamisch erstellt wurde. (Haftungsausschluss)
Cet article a été traduit automatiquement de manière dynamique. (Clause de non responsabilité)
Este artículo lo ha traducido una máquina de forma dinámica. (Aviso legal)
此内容已动态机器翻译。 放弃
このコンテンツは動的に機械翻訳されています。免責事項
This content has been machine translated dynamically.
This content has been machine translated dynamically.
This content has been machine translated dynamically.
This article has been machine translated.
Dieser Artikel wurde maschinell übersetzt. (Haftungsausschluss)
Ce article a été traduit automatiquement. (Clause de non responsabilité)
Este artículo ha sido traducido automáticamente. (Aviso legal)
この記事は機械翻訳されています.免責事項
이 기사는 기계 번역되었습니다.
Este artigo foi traduzido automaticamente.
这篇文章已经过机器翻译.放弃
Translation failed!
使用 Citrix ADC 设备进行 API 身份验证
现代应用程序与客户交互的方式发生了范式转变。传统上,浏览器客户端用于访问服务。应用程序通常会设置会话 cookie 来跟踪用户上下文。现代化的分布式应用程序使得跨微服务维护用户会话变得困难。因此,大多数应用程序访问都基于 API。 与这些分布式服务进行通信的客户端也不断发展。大多数客户端从称为授权服务器的受信任实体获取令牌,以证明用户身份和访问权限。然后,这些客户端将令牌与每个访问请求一起呈现给应用程序。因此,需要改进像 Citrix ADC 这样的传统代理设备以支持这些客户端。Citrix ADC 设备为管理员提供了一种处理此类流量的方法。Citrix ADC 可以部署为 API 网关,以便前端发送到已发布服务的所有流量。API 网关可以部署在传统(混合多云或 HMC)或云原生环境中。API Gateway 终止所有入站流量,以提供多种服务,如身份验证、授权、速率限制、路由、缓存、SSL 卸载、应用程序防火墙等。因此,它成为基础架构中的一个关键组成部分。
令牌类型
API 访问期间交换的令牌大多符合 OAuth/OpenID 连接 (OIDC) 协议。仅用于“委派访问”的访问令牌符合 OAuth 协议,而符合 OIDC 的 ID 令牌也包含用户信息。 访问令牌通常是不透明或随机的数据 Blob。但是,它们有时可能是符合 JWT(Json Web 令牌)标准的单独令牌。ID 令牌始终是签名的 JWT。
使用 OAuth 访问 API
Citrix ADC 设备上的 OAuth 身份验证类型可用于处理 OAuth 和 OIDC 协议。OIDC 是 OAuth 协议的扩展。
Citrix ADC 设备上的 OAuthAction 可用于处理交互式客户端,如浏览器和本机客户端(如客户端应用程序)。交互式客户端将重定向到身份提供程序使用 OIDC 协议登录。本机客户端可以获取带外令牌,并可以在 Citrix ADC 设备上显示这些令牌以供访问。
注意:
从终端节点获得的访问令牌可以缓存以供后续请求使用,从而提高 API 性能。
要使用命令行界面配置令牌缓存支持,请在命令提示符处键入以下命令:
set aaaparameter –apITokenCache <ENABLED>
以下各节介绍了本地客户端执行的 API 访问方法。
用于 API 访问的虚拟服务器
要部署 Citrix ADC 设备以进行 API 访问,通过 401 身份验证部署流量管理 (TM) 虚拟服务器。它与身份验证(身份验证、授权和审核)虚拟服务器相关联,以保存身份验证和会话策略。以下配置代码段创建一个此类虚拟服务器。
Add lb vserver lb-api-access SSL <IP> 443 -authn401 On -AuthnVsName auth-api-access
Bind ssl vserver lb-api-access -certkeyName <ssl-cert-entity>
Add authentication vserver auth-api-access SSL
注意:
您需要将服务绑定到 TM 虚拟服务器,并将身份验证策略(如下所述的 OAuthAction)绑定到身份验证虚拟服务器才能完成配置。
创建虚拟服务器后,需要添加 OAuthAction 以及相应的策略。OAuth 操作中还有其他几个选项,具体取决于令牌类型和其他安全机制。
ID 令牌的 OAuth 配置
ID 令牌始终是签名的 JWT。也就是说,它们携带标题、有效载荷和签名称。由于这些都是独立的令牌,Citrix ADC 设备可以在本地验证这些令牌。要验证这些令牌,设备需要知道用于对这些令牌进行签名的相应私钥的公钥。
以下是一个带有某些强制参数和“CertendPoint”的 OAuthAction 示例。
Add authentication OAuthAction oauth-api-access -clientid <your-client-id> -clientsecret <your-client-secret> -authorizationEndpoint <URL to which users would be redirected for login> -tokenEndpoint <endpoint at which tokens could be obtained> -certEndpoint <uri at which public keys of IdP are published>
其中,
-
客户端 ID — 标识 SP 的唯一字符串。授权服务器使用此 ID 推断客户端配置。最大长度:127。
-
客户端密码 — 由用户和授权服务器建立的密码字符串。最大长度:239。
-
authorizationEndpoint - 用户通常登录的 URL(使用交互式客户端时)。
-
tokenEndpoint -在授权服务器上提供/交换令牌/代码的 URL
-
certEndpoint -授权服务器发布用于签名令牌的公钥的 URL。授权服务器可以发布多个密钥,并选择其中一个签名令牌。
注意: 客户端 ID/客户端秘密/授权端点/令牌端点是 API 访问的可选参数。但是,为这些参数提供值是一种很好的做法,因为操作实体可以用于不同的目的。
在前面的配置中,“CertendPoint”对于 ID 令牌验证至关重要。此端点包含用于对令牌进行签名的证书的公钥。这些公钥必须符合 JWK(Json Web 密钥)规范。
在 Citrix ADC 设备上配置 CertendPoint 后,它将定期轮询端点(默认间隔为 1 天,可在配置中自定义),以使公钥保持最新状态。公钥可用后,ADC 可以对传入的 ID 令牌执行本地验证。
不透明访问令牌的 OAuth 配置
不透明令牌无法在 Citrix ADC 设备上进行本地验证。这些需要在授权服务器上进行验证。Citrix ADC 设备使用 OAuth 规范中提到的“内省协议”来验证这些令牌。OAuth 配置中提供了一个新选项,即 Introspecturl,用于验证不透明令牌。
set oauthAction oauth-api-acccess -introspectURL <uri of the Authorization Server for introspection>
内省 API 的格式符合https://tools.ietf.org/html/rfc7662#section-2.1
以下规范:
POST /introspect HTTP/1.1
Host: server.example.com
Accept: application/json
Content-Type: application/x-www-form-urlencoded
Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW
token=mF_9.B5f-4.1JqM&token_type_hint=access_token
将策略绑定到身份验证 vserver
创建 OAuthAction 后,需要创建相应的策略来调用它。
add authentication policy oauth-api-access -rule <> -action <oauth-api-access>```
bind authentication vserver auth-api-access -policy oauth-api-access -pri 100
Citrix ADC 设备上的其他安全设置
令牌验证包括令牌生命周期检查。超出可接受时间的令牌将被拒绝。以下是额外安全性的附加设置。其中一些建议始终进行配置。
受众:可以使用令牌的预期收件人配置 OAuth 操作。所有令牌都与此配置的 URL 匹配。Citrix ADC 设备具有一个附加功能,其中受众字段实际上指向设备上的模式集。使用此模式集,管理员可以为受众配置多个 URL。
add policy patset oauth_audiences
bind patset oauth_audiences https://app1.company.com
bind patset oauth_audiences https://app2.company.com
bind patset oauth_audiences httpsL//app1.company.com/path1
set oAuthAccess oauth-api-access -audience oauth_audiences
在上面的示例中,在模式集中指定了多个受众。因此,只有当传入令牌包含模式集中的任何已配置 URL 时,才允许传入令牌。
发行者:要接受其令牌的服务器的标识。最大长度:127。在 OAuth 操作中配置令牌的发行者是一种很好的做法。这可确保不允许由错误的授权服务器颁发的令牌。
SkewTime:指定 Citrix ADC 设备在传入令牌上允许的时钟偏斜(以分钟为单位)。例如,如果 SkewTime 为 10,则令牌的有效期为(当前时间-10)分钟到(当前时间 + 10)分钟,即总共 20 分钟。默认值:5
AllowedAlgorithms:此选项允许管理员限制传入令牌中的某些算法。默认情况下,允许使用所有支持的方法。但是,这些可以使用此选项控制。
以下配置确保仅允许使用 RS256 和 RS512 的令牌:
set oAuthAction oauth-api-access -allowedAlgorithms RS256 RS512
在上述配置之后,只允许使用 RS256 和 RS512 的令牌。
绕过身份验证中的某些流量
在许多情况下,有一些发现 API 可供客户端公开访问。这些 API 通常会显示服务本身的配置和功能。管理员可以使用“无身份验证”策略将 Citrix ADC 设备配置为绕过这些元数据 URL 的身份验证,如下所述:
add authentication policy auth-bypass-policy -rule <> -action NO_AUTHN
bind authentication vserver auth-api-access -policy auth-bypass-policy -pri 110
NO_AUTHN 是一种隐式操作,可在规则匹配时完成身份验证。除了 API 访问的范围之外,NO_UTHN 操作还有其他用途。
分享:
分享:
This Preview product documentation is Citrix Confidential.
You agree to hold this documentation confidential pursuant to the terms of your Citrix Beta/Tech Preview Agreement.
The development, release and timing of any features or functionality described in the Preview documentation remains at our sole discretion and are subject to change without notice or consultation.
The documentation is for informational purposes only and is not a commitment, promise or legal obligation to deliver any material, code or functionality and should not be relied upon in making Citrix product purchase decisions.
If you do not agree, select Do Not Agree to exit.