Contrôleur d'entrée Citrix ADC

Configurer les stratégies de partage des ressources d’origine croisée avec le Citrix ingress controller

Citrix fournit une définition de ressource personnalisée (CRD) appelée CRD CORS pour Kubernetes. Vous pouvez utiliser le CRD CORS pour configurer les stratégies de partage des ressources d’origine croisée (CORS) avec le Citrix ingress controller sur Citrix ADC.

Qu’est-ce que le CORS ?

Le partage de ressources entre origines multiples est un mécanisme qui permet au navigateur de déterminer si une application Web spécifique peut partager des ressources avec une autre application Web d’une origine différente. Il permet aux utilisateurs de demander des ressources (par exemple, des images, des polices et des vidéos) à partir de domaines extérieurs au domaine d’origine.

Pré-vol CORS

Avant qu’un navigateur Web autorise Javascript à émettre un POST sur une URL, il exécute une pre-flight requête. Une demande pré-vol est une simple demande adressée au serveur avec la même URL en utilisant la méthode OPTIONS plutôt que POST. Le navigateur Web vérifie les en-têtes HTTP pour les en-têtes liés à CORS afin de déterminer si l’opération POST pour le compte de l’utilisateur est autorisée.

Requête CORS

Définition du CRD CORS

Le CRD CORS est disponible dans le référentiel GitHub du Citrix ingress controller à l’adresse : cors-crd.yaml. Le CRD CORS fournit des attributs pour les différentes options requises pour définir la stratégie CORS sur le Citrix ADC d’entrée qui agit en tant que passerelle d’API. Les attributs requis sont les suivants : servicenamesallow_origin, allow_methods, et allow_headers.

Les attributs suivants sont fournis dans le CRD CORS :

Attribut Description
servicenames Spécifie la liste des services Kubernetes auxquels vous souhaitez appliquer les stratégies CORS.
allow_origin Spécifie la liste des origines autorisées. L’origine entrante est comparée à cette liste.
allow_methods Spécifie la liste des méthodes autorisées dans le cadre du protocole CORS.
allow_headers Spécifie la liste des en-têtes autorisés dans le cadre du protocole CORS.
max_age Spécifie le nombre de secondes pendant lesquelles les informations fournies par les Access-Control-Allow-Headers en-têtes Access-Control-Allow-Methods et peuvent être mises en cache. La valeur par défaut est 86400.
allow_credentials Spécifie si la réponse peut être partagée lorsque le mode d’informations d’identification de la demande est « inclure ». La valeur par défaut est « true ».

Déployer le CRD CORS

Effectuez les opérations suivantes pour déployer le CRD CORS :

  1. Téléchargez le CRD CORS.

  2. Déployez le CRD CORS à l’aide de la commande suivante :

    kubectl create -f cors-crd.yaml
    

    Par exemple :

    $ kubectl create -f cors-crd.yaml
    customresourcedefinition.apiextensions.k8s.io/corspolicies.citrix.com created
    $ kubectl get crd
    NAME                         CREATED AT
    corspolicies.citrix.com      2021-05-21T20:01:13Z
    

Comment écrire une configuration de stratégie CORS

Après avoir déployé le CRD CORS fourni par Citrix dans le cluster Kubernetes, vous pouvez définir la configuration de la stratégie CORS dans un fichier .yaml. Dans le fichier .yaml, utilisez corspolicy dans le champ type et dans la section spec, ajoutez les attributs CRD CORS en fonction de vos besoins pour la configuration de la stratégie.

Le fichier YAML suivant applique la stratégie configurée aux services répertoriés dans le champ servicenames. Citrix ADC répond avec un code de réponse 200 OK pour la demande de pré-vol si l’origine est l’un des allow_origins [“random1234.com », « hotdrink.beverages.com”]. La réponse comprend les éléments configurés allow_methodsallow_headers, et max_age.

apiVersion: citrix.com/v1beta1
kind: corspolicy
metadata:
  name: corspolicy-example
spec:
  servicenames:
   - "cors-service"
  allow_origin:
   - "random1234.com"
   - "hotdrink.beverages.com"
  allow_methods:
   - "POST"
   - "GET"
   - "OPTIONS"
  allow_headers:
   - "Origin"
   - "X-Requested-With"
   - "Content-Type"
   - "Accept"
   - "X-PINGOTHER"
  max_age: 86400
  allow_credentials: true
<!--NeedCopy-->

Après avoir défini la configuration de la stratégie, déployez le fichier .yaml à l’aide des commandes suivantes :

user@master:~/cors$ kubectl create -f corspolicy-example.yaml
corspolicy.citrix.com/corspolicy-example created

Le Citrix ingress controller applique la configuration de stratégie sur l’appareil Citrix ADC d’entrée.

Configurer les stratégies de partage des ressources d’origine croisée avec le Citrix ingress controller