ADC

Insertar atributos de cookie a las cookies generadas por ADC

Los administradores web pueden insertar otros atributos de cookie en las cookies generadas por el dispositivo Citrix ADC. Estos atributos de cookies adicionales ayudan a aplicar las directivas requeridas para las cookies generadas por ADC en función del patrón de acceso a la aplicación.

Las siguientes funciones utilizan las cookies generadas por el ADC para lograr la persistencia.

  • Persistencia de las cookies de equilibrio de carga
  • Persistencia de cookies de grupos de equilibrio de carga
  • Persistencia del sitio GSLB
  • Persistencia de cookies de cambio de contenido

Puede insertar otros atributos de cookie en las cookies generadas por el ADC mediante los siguientes parámetros:

  • literalADCCookieAttribute: Agregue otros atributos de cookie a la cookie generada por ADC, como cadena.

  • computedAdcCookieAttribute: utilice una variable ADC ns para anexar condicionalmente atributos de cookie a la cookie generada por ADC, en función de los atributos de cliente o servidor, por ejemplo, la versión del agente de usuario.

Nota

No puede configurar tanto el atributo de cookie ADC literal como el atributo de cookie ADC calculado simultáneamente en el parámetro de equilibrio de carga o en un único perfil de equilibrio de carga.

Cada cookie tiene un dominio asociado. Cuando el dominio de una cookie coincide con el dominio del sitio web en la barra de direcciones del usuario, se considera un contexto del mismo sitio (o propio). Si el dominio asociado a una cookie coincide con un servicio externo y no con el sitio web de la barra de direcciones del usuario, se considera un contexto entre sitios (o de terceros).

El atributo SameSite indica al navegador si la cookie se puede usar para el contexto entre sitios o solo para el contexto del mismo sitio. Además, si se pretende acceder a una aplicación en el contexto entre sitios, solo puede hacerlo a través de la conexión HTTPS. Para obtener más información, consulte RFC6265.

Hasta febrero de 2020, la propiedad SameSite no se estableció explícitamente en Citrix ADC. El explorador tomó el valor predeterminado como Ninguno y no afectó a las implementaciones de Citrix ADC.

Sin embargo, con la actualización de algunos navegadores, como Google Chrome 80, se produce un cambio en el comportamiento predeterminado entre dominios de las cookies. El atributo SameSite se puede establecer en uno de los siguientes valores. El valor predeterminado para Google Chrome se establece en Lax.

  • Ninguna: indica al navegador que debe utilizar una cookie en un contexto entre sitios únicamente en conexiones seguras.
  • Lax: indica que el explorador debe utilizar una cookie para las solicitudes en el mismo contexto del sitio. En el contexto entre sitios, solo los métodos HTTP seguros como la solicitud GET pueden usar la cookie.
  • Estricta: utilice la cookie solo en el contexto del mismo sitio.

Si no hay ningún atributo sameSite en la cookie, Google Chrome asume la funcionalidad de sameSite=LAX.

Nota

Para determinadas versiones de otros exploradores, el valor predeterminado del atributo SameSite podría establecerse en Ninguno. En algunas versiones del explorador, “SameSite = none” se puede tratar de manera diferente. Por ejemplo, los siguientes navegadores rechazan una cookie con “SameSite = none”:

  • Versiones de Chrome de Chrome 51 a Chrome 66 (incluido en ambos extremos)
  • Versiones del explorador UC en Android anteriores a la versión 12.13.2

Configurar cookies generadas por ADC

Para configurar los atributos de las cookie generadas por ADC, debe realizar lo siguiente:

  1. Crear un servidor virtual de equilibrio de carga
  2. Configure los atributos de la cookie ADC para el servidor virtual de equilibrio de carga, ya sea mediante los parámetros de LB o el perfil de LB.
  3. Si usa un perfil LB, defina el perfil LB en un servidor virtual de equilibrio de carga.
  4. Si decide utilizar el atributo de cookie ADC computado, configure la directiva de reescritura relacionada.

Nota

Si un perfil LB está enlazado a un servidor virtual LB, se tiene en cuenta la configuración del parámetro de perfil en lugar de la configuración global de parámetros LB.

Puede establecer los atributos de cookies generados por ADC mediante los siguientes métodos:

  • Configuración de los atributos de cookie ADC en los parámetros de equilibrio de carga
  • Configuración de los atributos de cookie ADC en el perfil de equilibrio de carga

Para aplicar una directiva uniformemente a las cookies generadas por ADC de todas las aplicaciones configuradas en el dispositivo Citrix ADC, puede establecer el atributo cookie ADC en los parámetros LB globales.

La configuración Literal ADC Cookie Atributo le permite insertar incondicionalmente los atributos de cookie en la cookie generada por ADC.

En la línea de comandos, escriba:

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

Ejemplo:

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

La configuración del atributo de cookie de ADC calculado le permite insertar condicionalmente los atributos de la cookie, en función de los atributos del cliente o del servidor, en la cookie generada por el ADC.

En la línea de comandos, escriba:

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

Ejemplo:

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

Configurar variables mediante la interfaz gráfica de usuario

  1. Vaya a AppExpert > Variablesy haga clic en Agregar.
  2. En la página Crear variable, seleccione Alcance como transacción y Escriba como texto en el menú desplegable.

    Crear variable para las cookies ADC

  3. Introduzca otros detalles y haga clic en Crear.

Crear una asignación mediante la interfaz gráfica de usuario

Tras configurar una variable, puede asignar un valor o especificar la operación que se va a realizar en la variable mediante la creación de una asignación.

  1. Vaya a AppExpert > Asignacionesy haga clic en Agregar.
  2. En la página Crear asignación, introduzca los detalles y haga clic en Crear.
  1. Vaya a Gestión de tráfico > Equilibrio de carga > Cambiar parámetros de Equilibrio de carga.

    cambiar parámetros de laboratorio

  2. En el panel Configurar parámetros de equilibrio de carga, introduzca los valores adecuados para cualquiera de los campos según sus requisitos:

    • Atributo literal de cookie ADC
    • Atributo de cookie ADC calculado

    configurar lb parameters.png

  3. Haga clic en Aceptar.

Para aplicar una directiva para una aplicación específica configurada en el dispositivo Citrix ADC, puede establecer los parámetros de atributo de cookie en el perfil LB vinculado al servidor virtual LB específico de la aplicación.

La configuración Literal ADC Cookie Atributo en el perfil LB le permite insertar incondicionalmente los atributos de cookie en la cookie generada por ADC que es específica de un servidor virtual.

En la línea de comandos, escriba:

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

Ejemplo:

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

La configuración del atributo de cookie ADC calculado del perfil LB le permite insertar condicionalmente los atributos de la cookie en función de los atributos del cliente o del servidor en la cookie generada por el ADC. A continuación, defina este perfil de LB en un servidor virtual de LB.

En la línea de comandos, escriba:

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

Ejemplo:

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. Vaya a Administración del tráfico > Equilibrio de carga > Servidores virtuales.
  2. Seleccione un servidor virtual y haga clic en Modificar.
  3. En la sección Configuración avanzada, haga clic en Agregar perfiles.

    servidor virtual lb

  4. En la sección Perfiles, haga clic en Agregar para crear un perfil de LB.

    Si ya ha creado un perfil, selecciónelo en el menú desplegable Perfil de LB.

    agregar perfiles

  5. En el panel Perfil LB, introduzca los valores adecuados para cualquiera de los campos según su requisito:
  • Atributo literal de cookie ADC
  • Atributo de cookie ADC calculado

    Atributos calculados literalmente en LB profile.png

  1. Haga clic en Aceptar.
  2. Configure el perfil LB creado en el servidor virtual LB creado en el paso 1.

Verificar la configuración de la variable ns

Para comprobar que la variable ns de ADC esté configurada correctamente en los parámetros de LB o en el perfil de LB, utilice los comandos show lb parameter o show lb profile.

En la siguiente tabla se enumeran los distintos mensajes de advertencia y su causa cuando la variable ns no está configurada correctamente.

Mensaje de advertencia Razones
La variable NS no está configurada. Configúrelo con el tipo text() y el alcance de la transacción para la variable La variable NS aún no está configurada.
El alcance de la variable NS configurada no es la transacción. La variable está configurada, pero el alcance no está establecido en “transacción”.
El tipo de variable no es Texto(). La variable está configurada pero el tipo no se establece en “Texto”.
El valor máximo configurado para la variable NS es mayor que 255. El valor configurado para la variable NS es superior a 255 caracteres. Nota: Se puede agregar una longitud máxima de 255 caracteres a una cookie generada por ADC. Los caracteres que superen la longitud máxima se truncan.

Resultado de ejemplo

En el siguiente ejemplo, se muestra el mensaje de advertencia cuando la variable ns no está configurada.

set lb parameter -ComputedADCCookieAttribute "$lbvar"

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

El mensaje de advertencia aparece en la siguiente salida del comando show lb parameter.

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

El siguiente ejemplo de configuración se aplica a la persistencia del sitio configurada en los servicios GSLB correspondientes a un servidor virtual de LB. Para agregar algunos atributos de cookie adicionales a las cookies de la GSLB, realice la siguiente configuración.

  • Configure los atributos de la cookie ADC en el perfil LB (LB-VServer-Profile-1).
  • Defina el valor literal del atributo de cookie ADC, por ejemplo, “sameSite=None”, en el perfil LB.
  • Configure el perfil LB en el servidor virtual de equilibrio de carga (LB-vServer-1), que representa el servicio 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-->

Nota

También puede insertar condicionalmente los atributos de la cookie mediante el atributo de cookie ADC calculado.

El siguiente ejemplo de configuración se aplica cuando se alojan varias aplicaciones en un servidor virtual de conmutación de contenido. Para aplicar la misma directiva a todas las aplicaciones, vincule las directivas de reescritura al servidor virtual de conmutación de contenido en lugar del servidor virtual LB, de la siguiente manera:

  • Configure los atributos de la cookie ADC en los parámetros de LB.

    Nota:

    También puede configurar los atributos de la cookie ADC en el perfil LB.

  • Configure la variable ns (cookieattribute_var) del tipo establecido en Texto y el alcance establecido en Transacción.
  • Configure el atributo de cookie ADC calculado en los parámetros globales de LB mediante la variable ns.
  • Establezca las directivas de reescritura (exception_samesite_attribute y append_samesite_attribute) en los servidores virtuales de conmutación de contenido para insertar los atributos de las 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-->
Insertar atributos de cookie a las cookies generadas por ADC