Citrix ADC

Einfügen von Cookie-Attributen zu ADC-generierten Cookies

Die Webadministratoren können zusätzliche Cookie-Attribute in die von der Citrix ADC Appliance generierten Cookies einfügen. Diese zusätzlichen Cookie-Attribute helfen bei der Durchsetzung der erforderlichen Richtlinien für die ADC-generierten Cookies basierend auf dem Anwendungszugriffsmuster.

Die folgenden Funktionen verwenden die von ADC generierten Cookies, um Persistenz zu erreichen.

  • Load Balancing Cookie-Persistenz
  • Load Balancing Group Cookie Persistenz
  • GSLB-Site-Persistenz
  • Content-Switching Cookie-Persistenz

Sie können zusätzliche Cookie-Attribute in die ADC-generierten Cookies einfügen, indem Sie die folgenden Parameter verwenden:

  • LiteralADCCookieAttribute: Fügen Sie zusätzliche Cookie-Attribute an das von ADC generierte Cookie als String an.

  • ComputedADCCookieAttribute: Verwenden Sie eine ADC ns-Variable, um Cookie-Attribute an das von ADC generierte Cookie anzuhängen, basierend auf den Client- oder Serverattributen, z. B.

Hinweis:

Sie können sowohl das Literal ADC Cookie-Attribut als auch das Berechnete ADC Cookie-Attribut nicht gleichzeitig auf dem Lastausgleichsparameter oder in einem einzelnen Lastausgleichsprofil konfigurieren.

Jedem Cookie ist eine Domain zugeordnet. Wenn die Domain eines Cookies mit der Website-Domain in der Adressleiste des Benutzers übereinstimmt, wird dies als Kontext der gleichen Website (oder der ersten Partei) betrachtet. Wenn die mit einem Cookie verknüpfte Domain mit einem externen Dienst und nicht mit der Website in der Adressleiste des Benutzers übereinstimmt, gilt dies als Cross-Site (oder Drittanbieter-Kontext).

Das Attribut sameSite gibt dem Browser an, ob das Cookie für den Cross-Site-Kontext oder nur für denselben Site-Kontext verwendet werden kann. Wenn auf eine Anwendung im Cross-Site-Kontext zugegriffen werden soll, kann sie dies auch nur über HTTPS-Verbindung tun. Einzelheiten finden Sie unter RFC6265.

Bis Februar 2020 wurde die SameSite -Eigenschaft in Citrix ADC nicht explizit festgelegt. Der Browser nahm den Standardwert “Keine” an und hat keine Auswirkungen auf die Citrix ADC Bereitstellungen.

Bei bestimmten Browsern aktualisieren, wie Google Chrome 80, gibt es jedoch eine Änderung des standardmäßigen domänenübergreifenden Verhaltens von Cookies. Das SameSite-Attribut kann auf einen der folgenden Werte festgelegt werden. Der Standardwert für Google Chrome ist auf Lax festgelegt.

  • Keine: Gibt an, dass der Browser Cookies nur bei sicheren Verbindungen im Cross-Site-Kontext verwendet.
  • Lax: Gibt an, dass der Browser Cookie für Anfragen im Kontext der gleichen Site verwendet. Im Cross-Site-Kontext können nur sichere HTTP-Methoden wie GET-Anforderung das Cookie verwenden.
  • Strict: Verwenden Sie das Cookie nur im Kontext der gleichen Seite. Wenn im Cookie kein SameSite-Attribut vorhanden ist, übernimmt Google Chrome die Funktionalität von SameSite=LAX.

Hinweis:

Für bestimmte Versionen anderer Browser ist der Standardwert für das sameSite Attribut möglicherweise auf Keinefestgelegt. In einigen Browser-Versionen kann “SameSite = none” anders behandelt werden. Beispielsweise lehnen die folgenden Browser ein Cookie mit “SameSite = none” ab:

  • Versionen von Chrome von Chrome 51 bis Chrome 66 (inklusive an beiden Enden)
  • Versionen des UC-Browsers auf Android vor Version 12.13.2

ADC-generierte Cookies konfigurieren

Um ADC-generierte Cookie-Attribute zu konfigurieren, müssen Sie Folgendes ausführen:

  1. Erstellen eines virtuellen Lastausgleichsservers
  2. Legen Sie die ADC-Cookie-Attribute für den virtuellen Lastausgleichsserver fest, entweder über LB-Parameter oder LB-Profil.
  3. Wenn Sie ein LB-Profil verwenden, legen Sie das LB-Profil auf einen virtuellen Lastausgleichsserver fest.
  4. Wenn Sie das Berechnete ADC-Cookie-Attribut verwenden möchten, konfigurieren Sie die entsprechende Rewrite-Richtlinie.

Hinweis:

Wenn ein LB-Profil an einen virtuellen LB-Server gebunden ist, wird die Konfiguration der Profilparameter anstelle der globalen LB-Parameterkonfiguration berücksichtigt.

Sie können die ADC-generierten Cookie-Attribute mit den folgenden Methoden festlegen:

  • Setzen der ADC-Cookie-Attribute in LB-Parametern
  • Setzen der ADC-Cookie-Attribute im LB-Profil

Um eine Richtlinie einheitlich auf ADC-generierte Cookies aller auf der Citrix ADC Appliance konfigurierten Anwendungen anzuwenden, können Sie das ADC-Cookie-Attribut in den globalen LB-Parametern festlegen.

Die Einstellung Literal ADC Cookie Attribute ermöglicht es Ihnen, die Cookie-Attribute bedingungslos in das ADC generierte Cookie einzufügen.

Geben Sie an der Eingabeaufforderung Folgendes ein:

set lb parameter -LiteralADCCookieAttribute <string>

Beispiel:

set lb parameter -LiteralADCCookieAttribute SameSite=None

Die Einstellung “Berechnetes ADC-Cookie-Attribut” ermöglicht es Ihnen, die Cookie-Attribute basierend auf den Client- oder Serverattributen in das von ADC generierte Cookie einzufügen.

Geben Sie an der Eingabeaufforderung Folgendes ein:

set lb parameter -ComputedADCCookieAttribute <ns variable>

Beispiel:

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

  1. Navigieren Sie zu Verkehrsverwaltung > Lastenausgleich > Parameter für den Lastausgleich ändern.

    lb-Parameter ändern

  2. Geben Sie im Bereich Lastausgleichsparameter konfigurieren die entsprechenden Werte für eines der Felder ein, die auf Ihrer Anforderung basieren:

    • Literal ADC-Cookie-Attribut
    • Berechnetes ADC-Cookie-Attribut

    lb parameters.png konfigurieren

  3. Klicken Sie auf OK.

Um eine Richtlinie für eine bestimmte Anwendung anzuwenden, die auf der Citrix ADC Appliance konfiguriert ist, können Sie die Cookie-Attributparameter im LB-Profil festlegen, das an den anwendungsspezifischen virtuellen LB-Server gebunden ist.

Die Einstellung Literal ADC-Cookie-Attribut im LB-Profil ermöglicht es Ihnen, die Cookie-Attribute bedingungslos in das ADC-generierte Cookie einzufügen, das für einen virtuellen Server spezifisch ist.

Geben Sie an der Eingabeaufforderung Folgendes ein:

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

Beispiel:

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

Die Einstellung “Berechnetes ADC-Cookie-Attribut” im LB-Profil ermöglicht es Ihnen, die Cookie-Attribute basierend auf den Client- oder Serverattributen in das ADC-generierte Cookie einzufügen. Legen Sie dann dieses LB-Profil auf einen virtuellen LB-Server fest.

Geben Sie an der Eingabeaufforderung Folgendes ein:

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

Beispiel:

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. Navigieren Sie zu Verkehrsverwaltung > Lastenausgleich > Virtuelle Server.
  2. Wählen Sie einen virtuellen Server aus, und klicken Sie auf Bearbeiten.
  3. Klicken Sie unter Erweiterte Einstellungen auf Profile hinzufügen.

    lb virtueller Server

  4. Klicken Sie im Abschnitt Profile auf Hinzufügen, um ein LB-Profil zu erstellen. Wenn Sie bereits ein Profil erstellt haben, wählen Sie es aus dem Dropdown-Menü LB-Profil aus.

    ![Profile hinzufügen] (/en-us/citrix-adc/media/add-profiles.png)

  5. Geben Sie im Bereich LB-Profil die entsprechenden Werte für eines der Felder ein, die auf Ihrer Anforderung basieren:
  • Literal ADC-Cookie-Attribut
  • Berechnetes ADC-Cookie-Attribut

    Literalberechnete Attribute in LB profile.png

  1. Klicken Sie auf OK.
  2. Legen Sie das erstellte LB-Profil auf den virtuellen LB-Server fest, der in Schritt 1erstellt wurde.

NS-Variablenkonfiguration überprüfen

Verwenden Sie den Parameter show lb oder show lb profile, um zu überprüfen, ob die Variable ADC ns in LB-Parametern oder LB-Profil entsprechend konfiguriert ist.

In der folgenden Tabelle werden die verschiedenen Warnmeldungen und deren Ursache aufgeführt, wenn die ns-Variable nicht korrekt konfiguriert ist.

Warnmeldung Gründe
Die NS-Variable ist nicht konfiguriert. Konfigurieren Sie es mit Typ text () und Bereichstransaktion für Variable Die NS-Variable ist noch nicht konfiguriert.
Der Umfang der konfigurierten NS-Variablen ist keine Transaktion. Variable ist konfiguriert, aber der Bereich ist nicht auf “Transaktion” festgelegt.
Der Typ der Variablen ist nicht Text (). Variable ist konfiguriert, aber der Typ ist nicht auf “Text” gesetzt.
Der konfigurierte Wert max-size für NS-Variable ist größer als 255. Der für die NS-Variable konfigurierte Wert ist größer als 255 Zeichen. Hinweis: Eine maximale Länge von 255 Zeichen kann an ein ADC-generiertes Cookie angehängt werden. Die Zeichen, die die maximale Länge überschreiten, werden abgeschnitten.

Beispiel-Ausgabe

Im folgenden Beispiel wird die Warnmeldung angezeigt, wenn die ns-Variable nicht konfiguriert ist.

set lb parameter -ComputedADCCookieAttribute "$lbvar"

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

Die Warnmeldung wird in der folgenden Ausgabe des Befehls show lb parameter angezeigt.

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

Die folgende Beispielkonfiguration gilt für die Site-Persistenz, die auf GSLB-Diensten konfiguriert ist, die einem virtuellen LB-Server entsprechen. Um einige zusätzliche Cookie-Attribute an die GSLB-Cookies anzuhängen, führen Sie die folgende Konfiguration durch.

  • Legen Sie die ADC-Cookie-Attribute im LB-Profil (LB-VServer-Profile-1) fest.
  • Legen Sie den Wert des Literal ADC Cookie-Attributs fest, z. B. “SameSite=None”, im LB-Profil.
  • Legen Sie das LB-Profil auf den virtuellen Lastausgleichsserver (LB-vServer-1) fest, der den GSLB-Dienst darstellt.
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

Hinweis:

Sie können die Cookie-Attribute auch bedingt mit dem Berechneten ADC-Cookie-Attribut einfügen.

Die folgende Beispielkonfiguration gilt, wenn mehrere Anwendungen hinter einem virtuellen Content Switching-Server gehostet werden. Um dieselbe Richtlinie auf alle Anwendungen anzuwenden, binden Sie die Umschreibrichtlinien wie folgt an den virtuellen Content Switching-Server anstelle des virtuellen LB-Servers:

  • Setzen Sie die ADC-Cookie-Attribute in den LB-Parametern.

    Hinweis:

    Sie können die ADC-Cookie-Attribute auch im LB-Profil festlegen.

  • Konfigurieren Sie die ns-Variable (cookieattribute_var) des Typs, der auf Text und Scope auf Transaktion festgelegt ist.
  • Setzen Sie das Berechnete ADC-Cookie-Attribut in den globalen LB-Parametern mithilfe der ns-Variablen.
  • Legen Sie die Rewrite-Richtlinien (exception_samesite_attribute und append_samesite_attribute) auf die virtuellen Server für das Einfügen der Cookie-Attribute von Inhalten fest.
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_insert "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