ADC

Insérer des attributs de cookie aux cookies générés par ADC

Les administrateurs Web peuvent insérer d’autres attributs de cookies dans les cookies générés par l’appliance Citrix ADC. Ces attributs de cookies supplémentaires aident à appliquer les stratégies requises pour les cookies générés par ADC en fonction du modèle d’accès à l’application.

Les fonctionnalités suivantes utilisent les cookies générés par l’ADC pour assurer la persistance.

  • Persistance des cookie d’équilibrage de charge
  • Persistance des cookie du groupe d’équilibrage de charge
  • Persistance du site GSLB
  • Persistance des cookies de commutation de contenu

Vous pouvez insérer d’autres attributs de cookie dans les cookies générés par ADC à l’aide des paramètres suivants :

  • LiteralAdcCookieAttribute : ajoutez d’autres attributs de cookie au cookie généré par ADC, sous forme de chaîne.

  • ComputedAdcCookieAttribute : Utilisez une variable ADC ns pour ajouter conditionnellement des attributs de cookie au cookie généré par ADC, en fonction des attributs client ou serveur, par exemple, la version de l’agent utilisateur.

Remarque

Vous ne pouvez pas configurer à la fois l’attribut de cookie ADC littéral et l’attribut de cookie ADC calculé simultanément sur le paramètre d’équilibrage de charge ou dans un seul profil d’équilibrage de charge.

Chaque cookie est associé à un domaine. Lorsque le domaine d’un cookie correspond au domaine du site Web indiqué dans la barre d’adresse de l’utilisateur, cela est considéré comme un contexte de même site (ou de première partie). Si le domaine associé à un cookie correspond à un service externe et non au site Web indiqué dans la barre d’adresse de l’utilisateur, cela est considéré comme un contexte intersite (ou tiers).

L’attribut SameSite indique au navigateur si le cookie peut être utilisé dans un contexte intersite ou uniquement dans un contexte de même site. De plus, si une application a l’intention d’être consultée dans un contexte intersite, elle ne peut le faire que via la connexion HTTPS. Pour plus de détails, consultez la RFC6265.

Jusqu’en février 2020, la propriété SameSite n’était pas explicitement définie dans Citrix ADC. Le navigateur a pris la valeur par défaut comme None et n’a eu aucun impact sur les déploiements de Citrix ADC.

Toutefois, la mise à niveau de certains navigateurs, tels que Google Chrome 80, modifie le comportement par défaut des cookies entre domaines. L’attribut SameSite peut être défini sur l’une des valeurs suivantes. La valeur par défaut de Google Chrome est définie sur Lax.

  • Aucun : indique que le navigateur doit utiliser un cookie dans un contexte intersite uniquement sur les connexions sécurisées.
  • Lax : indique que le navigateur doit utiliser un cookie pour les demandes dans le même contexte de site. Dans le contexte inter-site, seules les méthodes HTTP sûres comme la requête GET peuvent utiliser le cookie.
  • Strict : Utilisez le cookie uniquement dans le contexte du même site.

S’il n’y a pas d’attribut SameSite dans le cookie, Google Chrome suppose la fonctionnalité SameSite=LAX.

Remarque

Pour certaines versions d’autres navigateurs, la valeur par défaut de l’attribut SameSite peut être définie sur Aucun. Dans certaines versions du navigateur, « Samesite = none » peut être traité différemment. Par exemple, les navigateurs suivants rejettent un cookie avec « SameSite = none » :

  • Versions de Chrome de Chrome 51 à Chrome 66 (inclus sur les deux extrémités)
  • Versions du navigateur UC sur Android antérieures à la version 12.13.2

Configurer les cookies générés par ADC

Pour configurer les attributs des cookie générés par ADC, vous devez effectuer les opérations suivantes :

  1. Créer un serveur virtuel d’équilibrage de charge
  2. Définissez les attributs du cookie ADC pour le serveur virtuel d’équilibrage de charge, via les paramètres LB ou le profil LB.
  3. Si vous utilisez un profil LB, définissez le profil LB sur un serveur virtuel d’équilibrage de charge.
  4. Si vous choisissez d’utiliser l’attribut de cookie ADC calculé, configurez la stratégie de réécriture correspondante.

Remarque

Si un profil LB est lié à un serveur virtuel LB, la configuration du paramètre de profil est prise en compte au lieu de la configuration globale des paramètres LB.

Vous pouvez définir les attributs de cookie générés par ADC par les méthodes suivantes :

  • Définition des attributs des cookie ADC dans les paramètres d’équilibrage de charge
  • Définition des attributs des cookie ADC dans le profil d’équilibrage de charge

Pour appliquer uniformément une stratégie aux cookies générés par ADC de toutes les applications configurées sur l’appliance Citrix ADC, vous pouvez définir l’attribut cookie ADC dans les paramètres LB globaux.

Le paramètre Literal ADC Cookie Attribut vous permet d’insérer inconditionnellement les attributs de cookie dans le cookie généré par ADC.

À l’invite de commandes, tapez :

set lb parameter -LiteralADCCookieAttribute <string>
<!--NeedCopy-->

Exemple :

set lb parameter -LiteralADCCookieAttribute SameSite=None
<!--NeedCopy-->

Le paramètre d’ attribut de cookie ADC calculé vous permet d’insérer de manière conditionnelle les attributs du cookie, en fonction des attributs du client ou du serveur, dans le cookie généré par l’ADC.

À l’invite de commandes, tapez :

set lb parameter -ComputedADCCookieAttribute <ns variable>
<!--NeedCopy-->

Exemple :

add ns variable cookieattribute_var -type "text(100)" -scope transaction
set lb parameter -ComputedADCCookieAttributE "$cookieattribute_var"
add ns assignment samesiteassign -variable "$cookieattribute_var" -set ""SameSite=None""

add policy expression pol_iphone "(HTTP.REQ.HEADER("User-Agent").CONTAINS("iP") && (HTTP.REQ.HEADER("User-Agent").REGEX_SELECT(re/OS \d+\\_/).REGEX_SELECT(re/\d+/).TYPECAST_NUM_T(DECIMAL).EQ(12).typecast_text_t ALT "false").eq("true"))"
add policy expression pol_chrome "(HTTP.REQ.HEADER("User-Agent").CONTAINS("Chrom") && (HTTP.REQ.HEADER("User-Agent").REGEX_SELECT(re/Chrom.*\d+./).REGEX_SELECT(re/\d+/).TYPECAST_NUM_T(DECIMAL).BETWEEN(51,66).typecast_text_t ALT "false").eq("true"))"
add rewrite policy exception_samesite_attribute "pol_iphone || pol_chrome " NOREWRITE
add rewrite policy append_samesite_attribute true samesiteassign

bind rewrite global exception_samesite_attribute 90 110 -type RES_OVERRIDE
bind rewrite global append_samesite_attribute 100 110 -type RES_OVERRIDE
<!--NeedCopy-->

Configuration des variables à l’aide de l’interface graphique

  1. Accédez à AppExpert > Variables, puis cliquez sur Ajouter.
  2. Sur la page Créer une variable, sélectionnez Étendue en tant que transaction et Tapez sous forme de texte dans le menu déroulant.

    Créer une variable pour les cookies ADC

  3. Entrez d’autres détails, puis cliquez sur Créer.

Création d’un devoir à l’aide de l’interface graphique

Après avoir configuré une variable, vous pouvez lui attribuer une valeur ou spécifier l’opération à effectuer sur la variable en créant une affectation.

  1. Accédez à AppExpert > Affectations, puis cliquez sur Ajouter.
  2. Dans la page Créer un devoir, entrez les détails, puis cliquez sur Créer.
  1. Accédez à Gestion du trafic > Équilibrage de charge > Modifier les paramètres d’équilibrage de charge.

    modifier les paramètres du laboratoire

  2. Dans le volet Configurer les paramètres d’équilibrage de charge, entrez les valeurs appropriées pour l’un des champs en fonction de vos besoins :

    • Literal ADC Cookie Attribute
    • Computed ADC Cookie Attribute

    configurer lb parameters.png

  3. Cliquez sur OK.

Pour appliquer une stratégie à une application spécifique configurée sur l’appliance Citrix ADC, vous pouvez définir les paramètres de l’attribut de cookie dans le profil LB lié au serveur virtuel LB spécifique à l’application.

Le paramètre d’ attribut Cookie ADC Literal dans le profil LB vous permet d’insérer inconditionnellement les attributs de cookie dans le cookie généré par ADC spécifique à un serveur virtuel.

À l’invite de commandes, tapez :

add lb profile <profile name> -LiteralADCCookieAttribute <string>
<!--NeedCopy-->

Exemple :

add lb profile LB-Vserver-Profile-1 -LiteralADCCookieAttribute SameSite=None
add lb vserver LB-VServer-1 SSL 10.102.148.37 443 -persistenceType COOKIEINSERT -lbprofilename LB-Vserver-Profile-1
<!--NeedCopy-->

Le paramètre d’ attribut de cookie ADC calculé dans le profil LB vous permet d’insérer de manière conditionnelle les attributs du cookie en fonction des attributs du client ou du serveur, dans le cookie généré par l’ADC. Définissez ensuite ce profil LB sur un serveur virtuel LB.

À l’invite de commandes, tapez :

add lb profile <profile name> -ComputedADCCookieAttribute <ns variable>
<!--NeedCopy-->

Exemple :

add ns variable cookieattribute_var -type "text(100)" -scope transaction
add ns assignment samesiteassign -variable "$cookieattribute_var" -set ""SameSite=None""
add lb profile LB-Vserver-Profile-1 -ComputedADCCookieAttributE "$cookieattribute_var"

add policy expression pol_iphone "(HTTP.REQ.HEADER("User-Agent").CONTAINS("iP") && (HTTP.REQ.HEADER("User-Agent").REGEX_SELECT(re/OS \d+\\_/).REGEX_SELECT(re/\d+/).TYPECAST_NUM_T(DECIMAL).EQ(12).typecast_text_t ALT "false").eq("true"))"
add policy expression pol_chrome "(HTTP.REQ.HEADER("User-Agent").CONTAINS("Chrom") && (HTTP.REQ.HEADER("User-Agent").REGEX_SELECT(re/Chrom.*\d+./).REGEX_SELECT(re/\d+/).TYPECAST_NUM_T(DECIMAL).BETWEEN(51,66).typecast_text_t ALT "false").eq("true"))"
add rewrite policy exception_samesite_attribute "pol_iphone || pol_chrome " NOREWRITE
add rewrite policy append_samesite_attribute true samesiteassign

add lb vserver LB-VServer-1 SSL 10.102.148.37 443 -persistenceType COOKIEINSERT -lbprofilename LB-Vserver-Profile-1
bind lb vserver LB-VServer-1 -policyName exception_samesite_attribute -priority 90 -gotoPriorityExpression 110 -type RESPONSE
bind lb vserver LB-VServer-1 -policyName append_samesite_attribute -priority 100 -gotoPriorityExpression 110 -type RESPONSE
<!--NeedCopy-->
  1. Accédez à Gestion du trafic > Équilibrage de charge > Serveurs virtuels.
  2. Sélectionnez un serveur virtuel et cliquez sur Modifier.
  3. Dans la section Paramètres avancés, cliquez sur Ajouter des profils.

    lb virtual server

  4. Dans la section Profils, cliquez sur Ajouter pour créer un profil LB.

    Si vous avez déjà créé un profil, choisissez-le dans le menu déroulant Profil LB.

    add profiles

  5. Dans le volet Profil LB, entrez les valeurs appropriées pour l’un des champs en fonction de vos besoins :
  • Literal ADC Cookie Attribute
  • Computed ADC Cookie Attribute

    Literal-Computed attributes in LB profile.png

  1. Cliquez sur OK.
  2. Définissez le profil LB créé sur le serveur virtuel LB créé à l’étape 1.

Vérifier la configuration de la variable ns

Pour vérifier que la variable ADC ns est configurée correctement dans les paramètres LB ou le profil LB, utilisez les commandes show lb parameter ou show lb profile.

Le tableau suivant répertorie les différents messages d’avertissement et leur cause, lorsque la variable ns n’est pas correctement configurée.

Message d’avertissement Raisons
La variable NS n’est pas configurée. Configurez-le avec le type text () et la transaction scope pour la variable La variable NS n’est pas encore configurée.
La portée de la variable NS configurée n’est pas une transaction. La variable est configurée mais le champ d’application n’est pas défini sur « transaction ».
Le type de variable n’est pas Text (). La variable est configurée mais le type n’est pas défini sur « Texte ».
La taille maximale de valeur configurée pour la variable NS est supérieure à 255. La valeur configurée pour la variable NS est supérieure à 255 caractères. Remarque : une longueur maximale de 255 caractères peut être ajoutée à un cookie généré par ADC. Les caractères qui dépassent la longueur maximale sont tronqués.

Exemple de sortie

Dans l’exemple suivant, le message d’avertissement s’affiche lorsque la variable ns n’est pas configurée.

set lb parameter -ComputedADCCookieAttribute "$lbvar"

Warning: NS Variable is not configured. Please configure it with type text() and scope transaction
Done
<!--NeedCopy-->

Le message d’avertissement s’affiche dans la sortie suivante de la show lb parameter commande.

show lb parameter

Global LB parameters:
Persistence Cookie HttpOnly Flag: ENABLED
Use Encrypted Persistence Cookie: DISABLED
Use Port For Hash LB: YES
Prefer direct route: YES
Retain Service State: OFF
Start RR Factor: 0
Skip Maxclient for Monitoring: DISABLED
Monitor Connection Close: FIN
Use consolidated stats for LeastConnection: YES
Allow mac mode based vserver to pick thereturn traffic from services: DISABLED
Allow bound service removal: ENABLED
TTL for Domain Based Server: 0 secs

Citrix ADC Cookie Variable Name: $lbvar(NS Variable is not configured. Please configure it with type text() and scope transaction)

Done
<!--NeedCopy-->

L’exemple de configuration suivant s’applique à la persistance du site configurée sur les services GSLB correspondant à un serveur virtuel LB. Pour ajouter des attributs de cookie supplémentaires aux cookies GSLB, effectuez la configuration suivante.

  • Définissez les attributs du cookie ADC dans le profil LB (LB-VServer-Profile-1).
  • Définissez la valeur de l’attribut de cookie Literal ADC, par exemple « SameSite=None », dans le profil LB.
  • Définissez le profil LB sur le serveur virtuel d’équilibrage de charge (LB-vServer-1), qui représente le service GSLB.
add gslb vserver GSLB-VServer-1 SSL -backupLBMethod ROUNDROBIN -tolerance 0 -appflowLog DISABLED
add gslb site site1 10.102.148.4 -publicIP 10.102.148.4
add gslb service site1_gsvc1 10.102.148.35 SSL 443 -publicIP 10.102.148.35 -publicPort 443 -maxClient 0 -siteName site1 -sitePersistence HTTPRedirect -sitePrefix ss1 -cltTimeout 180 -svrTimeout 360 -downStateFlush ENABLED

bind gslb vserver GSLB-VServer-1 -serviceName site1_gsvc1
bind gslb vserver GSLB-VServer-1 -domainName www.gslb.com -TTL 5

add service service-1 10.102.84.140 SSL 443

add lb profile LB-Vserver-Profile-1 -LiteralADCCookieAttribute SameSite=None
add lb vserver LB-VServer-1 SSL 10.102.148.37 443 -persistenceType COOKIEINSERT -lbprofilename LB-Vserver-Profile-1

bind lb vserver LB-VServer-1 service-1
<!--NeedCopy-->

Remarque

Vous pouvez également insérer de manière conditionnelle les attributs de cookie à l’aide de l’attribut de cookie ADC calculé.

L’exemple de configuration suivant s’applique lorsque plusieurs applications sont hébergées derrière un serveur virtuel de commutation de contenu. Pour appliquer la même stratégie à toutes les applications, liez les stratégies de réécriture au serveur virtuel de commutation de contenu plutôt qu’au serveur virtuel LB, comme suit :

  • Définissez les attributs du cookie ADC dans les paramètres LB.

    Remarque :

    Vous pouvez également définir les attributs des cookie ADC dans le profil LB.

  • Configurez la variable ns (cookieattribute_var) dont le type est défini sur Texte et l’étendue sur Transaction.
  • Définissez l’attribut de cookie ADC calculé dans les paramètres LB globaux à l’aide de la variable ns.
  • Définissez les stratégies de réécriture (exception_samesite_attribute et append_samesite_attribute) sur les serveurs virtuels de commutation de contenu afin d’insérer les attributs des cookies.
add ns variable cookieattribute_var -type "text(100)" -scope transaction
set lb parameter -ComputedADCCookieAttributE "$cookieattribute_var"
add ns assignment samesiteassign -variable "$cookieattribute_var" -set ""SameSite=None""

add policy expression pol_iphone "(HTTP.REQ.HEADER("User-Agent").CONTAINS("iP") && (HTTP.REQ.HEADER("User-Agent").REGEX_SELECT(re/OS \d+\\_/).REGEX_SELECT(re/\d+/).TYPECAST_NUM_T(DECIMAL).EQ(12).typecast_text_t ALT "false").eq("true"))"
add policy expression pol_chrome "(HTTP.REQ.HEADER("User-Agent").CONTAINS("Chrom") && (HTTP.REQ.HEADER("User-Agent").REGEX_SELECT(re/Chrom.*\d+./).REGEX_SELECT(re/\d+/).TYPECAST_NUM_T(DECIMAL).BETWEEN(51,66).typecast_text_t ALT "false").eq("true"))"
add rewrite policy exception_samesite_attribute "pol_iphone || pol_chrome " NOREWRITE
add rewrite policy append_samesite_attribute true samesiteassign

add lb vserver LB-VServer-1 SSL 10.102.148.35 443
add lb vserver LB-VServer-2 SSL 10.102.148.36 443

add cs vserver CS-VServer-1 SSL 10.102.148.42 443 -persistenceType COOKIEINSERT

add cs action act1 -targetLBVserver v1
add cs action act2 -targetLBVserver v2
add cs policy CS-policy-1 -rule "HTTP.REQ.URL.CONTAINS("file1.html")" -action act1
add cs policy CS-policy-2 -rule "HTTP.REQ.URL.CONTAINS("file2.html")" -action act2

bind cs vserver CS-VServer-1 -policyName CS-policy-1 -priority 1
bind cs vserver CS-VServer-1 -policyName CS-policy-2 -priority 2

bind cs vserver -policyname exception_samesite_attribute 90 110 -type RES_OVERRIDE
bind cs vserver -policyname append_samesite_attribute 100 110 -type RES_OVERRIDE
<!--NeedCopy-->