Citrix应用程序交付管理

作为API代理服务器的Citrix ADM

作为API代理服务器的Citrix ADM

除了由于自身的管理和分析功能而能够接收硝基REST API请求外,Citrix应用程序交付管理(Citrix ADM)还可以充当其托管实例的REST API代理服务器。REST API客户端可以将API请求发送到Citrix ADM,而不是将API请求直接发送到托管实例。Citrix ADM可以区分它其须响应的API请求与其必须原样转发至托管实例的API请求。

作为API代理服务器,Citrix ADM具有以下优势:

  • 验证API请求。Citrix ADM 按照配置的安全策略和基于角色的访问控制 (RBAC) 策略来验证所有 API 请求。Citrix ADM 还可以识别租户,确保 API 活动不会跨越租户边界。

  • 集中审核。Citrix ADM 维护与其托管实例有关的所有 API 活动的审核日志。

  • 会话管理。Citrix ADM 使得 API 客户端免于必须维护与托管实例的会话。

Citrix ADM如何作为API代理服务器运行

希望Citrix ADM将请求转发至托管实例时,请配置API客户端以在API请求中包含以下HTTP标头中的任何一个:

标头值 说明
_MPS_API_PROXY_MANAGED_INSTANCE_NAME 托管实例的名称。
_MPS_API_PROXY_MANAGED_INSTANCE_IP 托管实例的IP地址。
_MPS_API_PROXY_MANAGED_INSTANCE_ID 托管实例的id。
_MPS_API_PROXY_TIMEOUT 硝基API请求的超时值。设置超时值(以秒为单位)。当您设置代理超时时,adm会在请求超时之前等待指定的持续时间。
_MPS_API_PROXY_MANAGED_INSTANCE_USERNAME 访问托管adc实例的用户名。
_MPS_API_PROXY_MANAGED_INSTANCE_PASSWORD 访问托管adc实例的密码。
_MPS_API_PROXY_MANAGED_INSTANCE_SESSID 用于访问托管实例的会话id。

注意

设置(设置)>管理(管理)> .单击“确定”系统配置(系统配置)>基本设置(基本设置)中,如果选择了实例登录的提示凭据(提示实例登录凭据),请务必配置托管实例的用户名和密码。或者,您也可以指定实例会话id。

如果存在这些HTTP标头中的任何一个,即可帮助Citrix ADM确定API请求是必须转发至托管实例的请求。标头值帮助Citrix ADM确定必须将请求转发到的托管实例。

下图中说明了此流程:

设备api

如上图所示,这些HTTP标头之一出现在请求中时,Citrix ADM按如下所示处理该请求:

  1. 在不修改请求的情况下,Citrix ADM将请求转发到实例API代理引擎。

  2. 实例API代理引擎将API请求转发至验证程序,并将API请求的详细信息记录在审核日志中。

  3. 验证程序确保请求没有违反配置的安全策略,rbac策略,租赁边界等。它还执行额外的检查,例如,确定托管实例是否可用的检查。

如果API请求有效且可以转发至托管实例,Citrix ADM将确定实例会话管理器维护的一个会话,然后将请求发送到托管实例。

注意:

请务必禁用实例登录的提示凭据(提示实例登录凭据)选项。为此,请执行以下操作:

  1. 导航到设置(设置)>管理(管理)
  2. 系统配置(系统配置)中,选择系统,时区,允许的url和消息的一天(系统,时区,允许的url和当天的消息)。

如何将Citrix ADM用作API代理服务器

以下示例显示了一个API客户端向IP地址为192.0.2.5的Citrix ADM服务器发送的REST API请求。Citrix ADM需要将请求原样转发到IP地址为192.0.2.10的托管实例。所有示例都使用_mps_api_proxy_managed_instance_ip标头。

在向Citrix ADM发送API请求之前,API客户端必须:

  • 登录思杰ADM
  • 获取会话id
  • 在后续的API请求中包含会话id。

登录API请求的形式如下:

POST /nitro/v1/config/login Content-Type: application/json {"login": {"username":"nsroot", "password":"nsroot"}} 

Citrix ADM响应登录请求,显示包括会话ID的响应信息。以下示例响应正文显示了会话id:

{"errorcode": 0, "message": "Done", "operation": "add", "resourceType": "login": "***********", "tenant_name": "Owner", "resourceName": "nsroot", "login": [{"tenant_name": "Owner", "permission": "superuser", "session_timeout": "36000", "challenge_token" ", "username": "", "login_type": "", "challenge": "", "client_ip": "", "client_port": "-1", "cert_verified": "false", "sessionid": "##D2BF9C5F40E5B2E884A9C45C89F0ADE24DA8A8169BE6358D39F5D471B73D", "token":"b2f3f935e93db6a"}]} 

示例 1:检索负载平衡虚拟服务器统计信息

客户端必须向Citrix ADM发送以下形式的API请求:

GET /nitro/v1/stat/lbvserver Content-type: application/json _MPS_API_PROXY_MANAGED_INSTANCE_IP: 192.0.2.10 SESSID: ##D2BF9C5F40E5B2E884A9C45C89F0ADE24DA8A8169BE6358D39F5D471B73D 

其中cookie标头的值是从登录API调用返回的会话ID。并且_mps_api_proxy_managed_instance_ip的值是adc的IP地址。

示例 2:创建负载平衡虚拟服务器

客户端必须向Citrix ADM发送以下形式的API请求:

POST /nitro/v1/config/lbvserver/sample_lbvserver Content-type: application/json Accept-type: application/json _MPS_API_PROXY_MANAGED_INSTANCE_IP: 192.0.2.10 SESSID: ##D2BF9C5F40E5B2E884A9C45C89F0ADE24DA8A8169BE6358D39F5D471B73D {"lbvserver":{"name":"sample_lbvserver", "servicetype":"HTTP", "ipv46":"10.102.1.11", "port":"80"}} 

示例 3:修改负载平衡虚拟服务器

客户端必须向Citrix ADM发送以下形式的API请求:

PUT /nitro/v1/config/lbvserver Content-type: application/json Accept-type: application/json _MPS_API_PROXY_MANAGED_INSTANCE_IP: 192.0.2.10 SESSID: ##D2BF9C5F40E5B2E884A9C45C89F0ADE24DA8A8169BE6358D39F5D471B73D {"lbvserver":{"name":"sample_lbvserver", "appflowlog":"DISABLED"}} 

示例 4:删除负载平衡虚拟服务器

客户端必须向Citrix ADM发送以下形式的API请求:

DELETE /nitro/v1/config/lbvserver/sample_lbvserver Accept-type: application/json _MPS_API_PROXY_MANAGED_INSTANCE_IP: 192.0.2.10 SESSID: ##D2BF9C5F40E5B2E884A9C45C89F0ADE24DA8A8169BE6358D39F5D471B73D 

示例5:在adc上下载cli运行配置

客户端必须向Citrix ADM发送以下形式的API请求:

GET /nitro/v1/config/nsrunningconfig Accept-type: application/json _MPS_API_PROXY_MANAGED_INSTANCE_IP: 192.0.2.10 SESSID: ##D2BF9C5F40E5B2E884A9C45C89F0ADE24DA8A8169BE6358D39F5D471B73D 
作为API代理服务器的Citrix ADM