Citrix应用交付管理

Citrix ADM作为API代理服务器

除了能够为自己的管理和分析功能接收NITRO REST API请求外,Citrix Application Delivery management (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 NITRO 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和当天的消息

如何使用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客户端必须:

  • 登录Citrix ADM
  • 获取会话ID
  • 在后续的API请求中包含会话ID。

登录API请求的格式如下:

POST /nitro/v1/config/login内容-类型:application/json {"login": {"username":"nsroot", "password":"nsroot"}} 

Citrix ADM用包含会话ID的响应来响应登录请求。下面的示例响应体显示了会话ID:

{"errorcode": 0, "message": "Done", "operation": "add", "resourceType": "login", "username": "***********", "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内容类型: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内容类型:application/json接受类型: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内容类型:application/json接受类型: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接受类型:application/json _MPS_API_PROXY_MANAGED_INSTANCE_IP: 192.0.2.10 SESSID: ##D2BF9C5F40E5B2E884A9C45C89F0ADE24DA8A8169BE6358D39F5D471B73D 
Citrix ADM作为API代理服务器