Application Delivery Management

NetScaler ADM como servidor proxy API

Además de poder recibir solicitudes de API REST de NITRO para sus propias funciones 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 de API, Citrix ADM le ofrece las siguientes ventajas:

  • Validación de solicitudes de API. Citrix ADM valida todas las solicitudes de API comparándolas con las políticas configuradas de seguridad y control de acceso basado en roles (RBAC). Citrix ADM también reconoce a los inquilinos y garantiza que la actividad de las API no sobrepase los límites de los inquilinos.

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

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

Cómo funciona Citrix ADM como servidor proxy de API

Cuando quiere que NetScaler 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 NetScaler 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 ilustración:

Device-api

Como se muestra en la ilustración anterior, cuando uno de estos encabezados HTTP aparece en una solicitud, NetScaler ADM procesa la solicitud de la siguiente manera:

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

  2. El motor proxy de la 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 se asegura de que la solicitud no infrinja las directivas de seguridad configuradas, las directivas de 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 la instancia y, a continuación, envía la solicitud a la instancia administrada.

Cómo usar NetScaler ADM como servidor proxy API

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

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

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

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

    POST /nitro/v2/config/login HTTP/1.1
    Host: 192.0.2.5
    Content-Type: application/json
    Accept: application/json
    Cache-Control: no-cache

    {
        "login":
        {
            "username":"******",
            "password":"*******"
        }
    }
<!--NeedCopy-->

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

{

  "errorcode": 0,
  "message": "Done",
  "operation": "add",
  "resourceType": "login",
  "username": "***********",
  "tenant_name": "Owner",
  "resourceName": "******",
  "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"
    }
  ]

}
<!--NeedCopy-->

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

El cliente debe enviar a NetScaler 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
    Cookie: SESSID=##D2BF9C5F40E5B2E884A9C45C89F0ADE24DA8A8169BE6358D39F5D471B73D
    Accept: application/json
    Cache-Control: no-cache
<!--NeedCopy-->

Ejemplo 2: Crear un servidor virtual de equilibrio de carga

El cliente debe enviar a NetScaler 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
    Cookie: SESSID=##D2BF9C5F40E5B2E884A9C45C89F0ADE24DA8A8169BE6358D39F5D471B73D
    Content-Type: application/json
    Accept: application/json
    Cache-Control: no-cache

    {"lbvserver":{"name":"sample_lbvserver","servicetype":"HTTP","ipv46":"10.102.1.11","port":"80"}}
<!--NeedCopy-->

Ejemplo 3: Modificar un servidor virtual de equilibrio de carga

El cliente debe enviar a NetScaler 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/json
    Accept: application/json
    Cache-Control: no-cache

    {"lbvserver":{"name":"sample_lbvserver","appflowlog":"DISABLED"}}
<!--NeedCopy-->

Ejemplo 4: Eliminar un servidor virtual de equilibrio de carga

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

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

<!--NeedCopy-->
NetScaler ADM como servidor proxy API