Citrix ADC

Insertar atributos de cookie a las cookies generadas por ADC

Los administradores web pueden insertar atributos de cookies adicionales a 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 ADC para lograr la persistencia.

  • Persistencia de cookies de equilibrio de carga
  • Persistencia de cookies de grupo de equilibrio de carga
  • Persistencia del sitio GSLB
  • Persistencia de cookies de cambio de contenido

Puede insertar atributos de cookies adicionales a las cookies generadas por ADC mediante los siguientes parámetros:

  • LiteralAdcCookieAttribute: Agregue atributos de cookie adicionales a la cookie generada por ADC, como una 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 computado, 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 a ella. 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 de primera parte). Si el dominio asociado a una cookie coincide con un servicio externo y no con el sitio web en la barra de direcciones del usuario, se considera un contexto entre sitios (o de terceros).

El atributo SameSite indica al explorador si la cookie se puede utilizar para el contexto entre sitios o solo para el contexto del mismo sitio. Además, si una aplicación tiene la intención de ser accedida en contexto entre sitios, entonces solo puede hacerlo a través de una conexión HTTPS. Para obtener información detallada, consulte RFC6265.

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

Sin embargo, con la actualización de ciertos exploradores, 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.

  • Ninguno: indica que el explorador utilizará cookies en contexto de sitios cruzados solo en conexiones seguras.
  • Lax: Indica el explorador para utilizar la cookie para las solicitudes en el contexto del mismo 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 ciertas versiones de otros exploradores, el valor predeterminado para el atributo SameSite podría establecerse en Ninguno. En algunas versiones del explorador, “SameSite = none” se puede tratar de manera diferente. Por ejemplo, los siguientes exploradores 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 cookies generados por ADC, debe realizar lo siguiente:

  1. Crear un servidor virtual de equilibrio de carga
  2. Establezca los atributos de Cookie ADC para el servidor virtual de equilibrio de carga, ya sea a través de parámetros LB o perfil LB.
  3. Si utiliza un perfil LB, defina el perfil LB en un servidor virtual de equilibrio de carga.
  4. Si decide utilizar el atributo de cookies ADC computado, configure la directiva de reescritura relacionada.

Nota

Si un perfil LB está enlazado a un servidor virtual LB, se considera la configuración del parámetro de perfil en lugar de la configuración global del parámetro 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 LB
  • Configuración de los atributos de cookie ADC en el perfil LB

Para aplicar una directiva de manera uniforme 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 el símbolo del sistema, escriba:

set lb parameter -LiteralADCCookieAttribute <string>

Ejemplo:

set lb parameter -LiteralADCCookieAttribute SameSite=None

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

En el símbolo del sistema, escriba:

set lb parameter -ComputedADCCookieAttribute <ns variable>

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

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 Ámbito como transacción y Tipo como texto en el menú desplegable.

    Crear variable para cookies ADC

  3. Introduzca otros detalles y haga clic en Crear.

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

Después de configurar una variable, puede asignar un valor o especificar la operación que se va a realizar en la variable creando 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.

    Crear asignación para variables ADC

  1. Acceda a Gestión de Tráfico > Equilibrio de carga > Cambiar parámetros de Equilibrio de carga.

    cambiar parámetros lb

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

    • Atributo de cookie ADC literal
    • 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 enlazado 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 el símbolo del sistema, escriba:

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

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

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

En el símbolo del sistema, escriba:

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

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
  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 LB. Si ya ha creado un perfil, selecciónelo en el menú desplegable Perfil LB.

    ![agregar perfiles] (/en-us/citrix-adc/media/add-profiles.png)

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

    Atributos calculados literalmente en LB profile.png

  1. Haga clic en Aceptar.
  2. Establezca 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 ADC ns está configurada adecuadamente en parámetros LB o perfil LB, utilice los comandos show lb parámetro o show lb profile.

En la tabla siguiente se enumeran los diversos 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 tipo text () y transacción de ámbito para la variable La variable NS aún no está configurada.
El ámbito de la variable NS configurada no es transacción. La variable está configurada, pero el ámbito no se establece en “transacción”.
El tipo de variable no es Text (). 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 mayor que 255 caracteres. Nota: Se puede agregar una longitud máxima de 255 caracteres a una cookie generada por ADC. Los caracteres que superan la longitud máxima se truncan.

Salida de muestra

En el ejemplo siguiente, 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

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

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

Configuración de ejemplo para insertar atributos de cookies en la implementación de GSLB

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

  • Establezca los atributos de cookie ADC en el perfil LB (LB-Vserver-Profile-1).
  • Establezca el valor del atributo de cookie de ADC literal, por ejemplo “SameSite=None”, en el perfil LB.
  • Establezca 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

Nota

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

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

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

    Nota:

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

  • Configure la variable ns (cookieattribute_var) de Tipo establecido en Texto y Ámbito establecido en Transacción.
  • Establezca el atributo de cookie de ADC computado en los parámetros LB globales mediante la variable ns.
  • Establezca las directivas de reescritura (exception_samesite_attribute y append_samesite_attribute) en los servidores virtuales de cambio de contenido para insertar los atributos 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