Citrix 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 politiques 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 ADC pour obtenir la persistance.

  • Persistance des cookies d’équilibrage de charge
  • Persistance des cookies 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 a un domaine qui lui est associé. Lorsque le domaine d’un cookie correspond au domaine du site Web 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 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é pour un contexte intersite ou uniquement pour 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, voir 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 pas eu d’impact sur les déploiements Citrix ADC.

Cependant, avec la mise à niveau de certains navigateurs, tels que Google Chrome 80, il y a un changement dans le comportement inter-domaines par défaut des cookies. 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 des 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 assume la fonctionnalité de 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 de cookies 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 de cookie ADC pour le serveur virtuel d’équilibrage de charge, soit via les paramètres LB soit par le biais du 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 Cookie ADC calculé, configurez la stratégie de réécriture associée.

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 Calculé ADC Cookie Attribut vous permet d’insérer conditionnellement les attributs de cookie, basés sur les attributs client ou serveur, dans le cookie généré par 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-->

Configurer les variables à l’aide de l’interface graphique

  1. Accédez à AppExpert > Variables, puis cliquez sur Ajouter.
  2. Dans la page Créer une variable, sélectionnez Étendue en tant que transaction et Tapez comme 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éer une affectation à l’aide de l’interface graphique

Après avoir configuré une variable, vous pouvez affecter 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.

    Créer une affectation pour les variables ADC

  1. Accédez à Gestion du trafic > Équilibrage de charge > Modifier les paramètres d’équilibrage de charge.

    change lb parameters

  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

    configure 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 Calculé ADC Cookie Attribut dans le profil LB vous permet d’insérer conditionnellement les attributs de cookie basés sur les attributs client ou serveur, dans le cookie généré par ADC. Ensuite, définissez 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. Sous 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 correctement configurée dans les paramètres LB ou le profil LB, utilisez le paramètre show lb ou show lb profile commandes.

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 d’étendue pour la variable La variable NS n’est pas encore configurée.
L’étendue de la variable NS configurée n’est pas une transaction. La variable est configurée mais l’étendue n’est pas définie sur « transaction ».
Le type de variable n’est pas Texte (). 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 de site configurée sur les services GSLB correspondant à un serveur virtuel LB. Pour ajouter des attributs de cookies supplémentaires aux cookies GSLB, effectuez la configuration suivante.

  • Définissez les attributs de cookie ADC dans le profil LB (LB-vserver-profile-1).
  • Définissez la valeur de l’attribut Cookie ADC Literal, 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 conditionnellement les attributs de cookie à l’aide de l’attribut 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 au lieu du serveur virtuel LB, comme suit :

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

    Remarque :

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

  • Configurez la variable ns (cookieattribute_var) de Type définie sur Texte et Étendue définie sur Transaction.
  • Définissez l’attribut 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 pour l’insertion des attributs de cookie.
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-->