Citrix Application Delivery Management

Citrix ADM como servidor proxy API

Además de poder recibir solicitudes de API NITRO REST para su propia funcionalidad de administración y análisis, Citrix Application Delivery Management (Citrix ADM) puede funcionar como un servidor proxy de API REST para sus instancias administradas. En lugar de enviar solicitudes de API directamente a las instancias administradas, los clientes de API REST pueden enviar las solicitudes de API a Citrix ADM. Citrix ADM puede diferenciar entre las solicitudes de API a las que debe responder y las solicitudes de API que debe reenviar sin cambios a una instancia administrada.

Como servidor proxy API, Citrix ADM ofrece las siguientes ventajas:

  • Validación de solicitudes API. Citrix ADM valida todas las solicitudes de API con respecto a las directivas de seguridad y control de acceso basado en roles (RBAC) configuradas. Citrix ADM también es consciente de los arrendatarios y garantiza que la actividad de API no cruce los límites de los arrendatarios.

  • Auditoría centralizada. Citrix ADM mantiene un registro de auditoría de toda la actividad de API relacionada con sus instancias administradas.

  • Gestión de sesiones. Citrix ADM libera a los clientes de API de la tarea de mantener sesiones con instancias administradas.

Cómo funciona Citrix ADM como servidor proxy API

Cuando quiere que Citrix ADM reenvíe una solicitud a una instancia administrada, configure el cliente de API para que incluya cualquiera de los siguientes encabezados HTTP en la solicitud de API:

  • _MPS_API_PROXY_MANAGED_INSTANCE_NAME. Nombre de la instancia administrada.
  • _MPS_API_PROXY_MANAGED_INSTANCE_IP. Dirección IP de la instancia administrada.
  • _MPS_API_PROXY_MANAGED_INSTANCE_ID. ID de la instancia administrada.

La presencia de cualquiera de estos encabezados HTTP ayuda a Citrix ADM a identificar una solicitud de API como una que debe reenviar a una instancia administrada. El valor del encabezado ayuda a Citrix ADM a identificar la instancia administrada a la que debe reenviar la solicitud.

Este flujo se representa en la siguiente figura:

API de dispositivo

Como se muestra en la figura anterior, cuando uno de estos encabezados HTTP aparece en una solicitud, Citrix ADM procesa la solicitud de la siguiente manera:

  1. Sin modificar la solicitud, Citrix ADM reenvía la solicitud al motor proxy de API de instancia.

  2. El motor proxy de API de instancia reenvía la solicitud de API a un validador y registra los detalles de la solicitud de API en el registro de auditoría.

  3. El validador garantiza que la solicitud no infringe las directivas de seguridad configuradas, las directivas RBAC, los límites de arrendamiento, etc. Realiza comprobaciones adicionales, como una comprobación para determinar si la instancia administrada está disponible.

Si la solicitud de API es válida y se puede reenviar a la instancia administrada, Citrix ADM identifica una sesión que mantiene el administrador de sesiones de instancia y, a continuación, envía la solicitud a la instancia administrada.

Cómo usar Citrix ADM como servidor proxy API

En los siguientes ejemplos se muestran las solicitudes de API REST que un cliente API envía a un servidor Citrix ADM que tiene una dirección IP 192.0.2.5. Citrix ADM debe reenviar las solicitudes, sin cambios, a una instancia administrada con dirección IP 192.0.2.10. Todos los ejemplos utilizan el encabezado _MPS_API_PROXY_MANAGED_INSTANCE_IP.

Antes de enviar las solicitudes de API de Citrix ADM, el cliente de API debe:

  • Inicie sesión en Citrix ADM
  • Obtener un ID de sesión
  • Incluya el ID de sesión en las solicitudes API posteriores.

La solicitud de la API de inicio de sesión tiene la siguiente forma:

    POST /nitro/v1/config/login HTTP/1.1
    Host: 192.0.2.5
    Cache-Control: no-cache
    object=
    {
    "login":
        {
            "username":"nsroot",
            "password":"nsroot"
         }
    }

Citrix ADM responde a la solicitud de inicio de sesión con una respuesta que incluye el ID de sesión. El siguiente cuerpo de respuesta de ejemplo muestra un ID de sesión:

{

  "errorcode": 0,

  "message": "Done",

  "operation": "add",

  "resourceType": "login",

  "username": "***********",

  "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"

    }

  ]

}

Ejemplo 1: Recuperar estadísticas del servidor virtual de equilibrio de carga

El cliente debe enviar a Citrix ADM una solicitud de API del siguiente formulario:

    GET /nitro/v1/stat/lbvserver HTTP/1.1
    Host: 192.0.2.5
    _MPS_API_PROXY_MANAGED_INSTANCE_IP: 192.0.2.10
    SESSID: ##D2BF9C5F40E5B2E884A9C45C89F0ADE24DA8A8169BE6358D39F5D471B73D
    Content-type: application/json
    Cache-Control: no-cache

Ejemplo 2: Crear un servidor virtual de equilibrio de carga

El cliente debe enviar a Citrix ADM una solicitud de API del siguiente formulario:


    POST /nitro/v1/config/lbvserver/sample_lbvserver HTTP/1.1
    Host: 192.0.2.5
    _MPS_API_PROXY_MANAGED_INSTANCE_IP: 192.0.2.10
    SESSID: ##D2BF9C5F40E5B2E884A9C45C89F0ADE24DA8A8169BE6358D39F5D471B73D
    Content-type: application/vnd.com.citrix.netscaler.lbvserver+json
    Accept-type: application/vnd.com.citrix.netscaler.lbvserver+json
    Cache-Control: no-cache
    {"lbvserver":{"name":"sample_lbvserver","servicetype":"HTTP","ipv46":"10.102.1.11","port":"80"}}

Ejemplo 3: Modificar un servidor virtual de equilibrio de carga

El cliente debe enviar a Citrix ADM una solicitud de API del siguiente formulario:

    PUT /nitro/v1/config/lbvserver HTTP/1.1
    Host: 192.0.2.5
    SESSID: ##D2BF9C5F40E5B2E884A9C45C89F0ADE24DA8A8169BE6358D39F5D471B73D
    _MPS_API_PROXY_MANAGED_INSTANCE_IP: 192.0.2.10
    Content-type: application/vnd.com.citrix.netscaler.lbvserver+json
    Accept-type: application/vnd.com.citrix.netscaler.lbvserver+json
    Cache-Control: no-cache
    {"lbvserver":{"name":"sample_lbvserver","appflowlog":"DISABLED"}}

Ejemplo 4: Eliminar un servidor virtual de equilibrio de carga

El cliente debe enviar a Citrix ADM una solicitud de API del siguiente formulario:

    DELETE /nitro/v1/config/lbvserver/sample_lbvserver HTTP/1.1
    Host: 192.0.2.5
    SESSID: ##D2BF9C5F40E5B2E884A9C45C89F0ADE24DA8A8169BE6358D39F5D471B73D
    _MPS_API_PROXY_MANAGED_INSTANCE_IP: 192.0.2.10
    Cache-Control: no-cache

Citrix ADM como servidor proxy API