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识别它必须将请求转发到的被管理实例。
该流程如下图所示:
如上图所示,当请求中出现这些HTTP头之一时,Citrix ADM对请求的处理如下:
在不修改请求的情况下,Citrix ADM将请求转发给实例API代理引擎。
实例API代理引擎将API请求转发给验证器,并在审计日志中记录API请求的详细信息。
验证器确保请求不违反配置的安全策略、RBAC策略、租赁边界等。它执行额外的检查,例如确定托管实例是否可用的检查。
如果API请求是有效的,并且可以转发到托管实例,Citrix ADM识别由实例会话管理器维护的会话,然后将请求发送到托管实例。
请注意
确保提示实例登录凭据选项被禁用。这样做:
- 导航到系统>管理.
- 在系统配置中,选择系统,时区,允许的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