Application Delivery Management

Citrix ADM en tant que serveur proxy API

En plus de pouvoir recevoir des demandes d’API REST NITRO pour ses propres fonctionnalités de gestion et d’analyse, Citrix Application Delivery Management (Citrix ADM) peut fonctionner en tant que serveur proxy API REST pour ses instances gérées. Au lieu d’envoyer des demandes d’API directement aux instances gérées, les clients d’API REST peuvent envoyer les demandes d’API à Citrix ADM. Citrix ADM peut faire la différence entre les demandes d’API auxquelles il doit répondre et les demandes d’API qu’il doit transférer inchangées à une instance gérée.

En tant que serveur proxy API, Citrix ADM vous offre les avantages suivants :

  • Validation des demandes d’API. Citrix ADM valide toutes les demandes d’API par rapport aux stratégies de sécurité configurées et de contrôle d’accès basé sur les rôles (RBAC). Citrix ADM est également conscient des locataires et veille à ce que l’activité API ne dépasse pas les limites des locataires.

  • Audit centralisé. Citrix ADM gère un journal d’audit de toutes les activités d’API liées à ses instances gérées.

  • Gestion de session. Citrix ADM libère les clients API de la tâche consistant à gérer des sessions avec des instances gérées.

Comment Citrix ADM fonctionne en tant que serveur proxy d’API

Lorsque vous souhaitez que Citrix ADM transporte une requête à une instance gérée, vous configurez le client API pour inclure l’un des en-têtes HTTP suivants dans la requête API :

  • _MPS_API_PROXY_MANAGED_INSTANCE_NAME. Nom de l’instance gérée.
  • _MPS_API_PROXY_MANAGED_INSTANCE_IP. Adresse IP de l’instance gérée.
  • _MPS_API_PROXY_MANAGED_INSTANCE_ID. ID de l’instance gérée.

La présence de l’un de ces en-têtes HTTP permet à Citrix ADM d’identifier une requête API comme une requête qu’elle doit transférer à une instance gérée. La valeur de l’en-tête permet à Citrix ADM d’identifier l’instance gérée vers laquelle il doit transférer la demande.

Ce flux est représenté dans la figure suivante :

Device-api

Comme indiqué dans la figure ci-dessus, lorsque l’un de ces en-têtes HTTP apparaît dans une requête, Citrix ADM traite la demande comme suit :

  1. Sans modifier la demande, Citrix ADM transmet la demande au moteur proxy de l’API d’instance.

  2. Le moteur proxy de l’API d’instance transmet la demande d’API à un validateur et consigne les détails de la demande d’API dans le journal d’audit.

  3. Le validateur s’assure que la demande ne viole pas les stratégies de sécurité configurées, les stratégies RBAC, les limites de location, etc. Il effectue des vérifications supplémentaires, telles qu’une vérification pour déterminer si l’instance gérée est disponible.

Si la demande d’API est valide et peut être transférée à l’instance gérée, Citrix ADM identifie une session qui est maintenue par le gestionnaire de session d’instance, puis envoie la demande à l’instance gérée.

Comment utiliser Citrix ADM en tant que serveur proxy API

Les exemples suivants montrent les demandes d’API REST qu’un client API envoie à un serveur Citrix ADM dont l’adresse IP est 192.0.2.5. Citrix ADM est requis pour transférer les demandes, inchangées, vers une instance gérée avec l’adresse IP 192.0.2.10. Tous les exemples utilisent l’en-tête _MPS_API_PROXY_MANAGED_INSTANCE_IP.

Avant d’envoyer les demandes d’API Citrix ADM, le client API doit :

  • Connectez-vous à Citrix ADM
  • Obtenir un ID de session
  • Incluez l’ID de session dans les demandes d’API suivantes.

La demande d’API d’ouverture de session est de la forme suivante :

    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 répond à la demande d’ouverture de session avec une réponse qui inclut l’ID de session. L’exemple de corps de réponse suivant affiche un ID de session :

{

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

Exemple 1 : Récupérer des statistiques de serveur virtuel d’équilibrage de charge

Le client doit envoyer à Citrix ADM une demande d’API du formulaire suivant :

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

Exemple 2 : Créer un serveur virtuel d’équilibrage de charge

Le client doit envoyer à Citrix ADM une demande d’API du formulaire suivant :


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

Exemple 3 : Modifier un serveur virtuel d’équilibrage de charge

Le client doit envoyer à Citrix ADM une demande d’API du formulaire suivant :

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

Exemple 4 : Suppression d’un serveur virtuel d’équilibrage de charge

Le client doit envoyer à Citrix ADM une demande d’API du formulaire suivant :

    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-->
Citrix ADM en tant que serveur proxy API