Citrix ADC

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

Die Webadministratoren können andere 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 von ADC generierten Cookies basierend auf dem Anwendungszugriffsmuster.

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

  • Load Balancing-Cookie-Persistenz
  • Ausgleichsgruppen-Cookie-Persistenz
  • GSLB-Standort-Beharrlichkeit
  • Cookie-Persistenz beim Content Switching

Sie können mit den folgenden Parametern andere Cookie-Attribute in die von ADC generierten Cookies einfügen:

  • literalAdcCookieAttribute: Hängen Sie andere Cookie-Attribute als String an das von ADC generierte Cookie 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 literale ADC-Cookie-Attribut als auch das berechnete ADC-Cookie-Attribut nicht gleichzeitig für den Lastausgleichsparameter oder in einem einzigen Lastausgleichsprofil konfigurieren.

Mit jedem Cookie ist eine Domain verknüpft. Wenn die Domäne eines Cookies mit der Website-Domain in der Adressleiste des Benutzers übereinstimmt, wird dies als Kontext derselben Site (oder Erstanbieter) 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 standortübergreifender Kontext (oder Drittanbieter).

Das SameSite-Attribut gibt dem Browser an, ob das Cookie für standortübergreifenden Kontext oder nur für den gleichen Site-Kontext verwendet werden kann. Wenn eine Anwendung beabsichtigt, im standortübergreifenden Kontext zugegriffen zu werden, kann sie dies nur über die HTTPS-Verbindung tun. Weitere Informationen finden Sie unter RFC6265.

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

Bei einem Upgrade bestimmter Browser, wie Google Chrome 80, ändert sich jedoch das standardmäßige domänenübergreifende Verhalten von Cookies. Das SameSite-Attribut kann auf einen der folgenden Werte festgelegt werden. Der Standardwert für Google Chrome ist auf Lax festgelegt.

  • Keine: Zeigt an, dass der Browser ein Cookie im siteübergreifenden Kontext nur für sichere Verbindungen verwendet.
  • Lax: Zeigt an, dass der Browser ein Cookie für Anfragen im Kontext derselben Website verwendet. Im Cross-Site-Kontext können nur sichere HTTP-Methoden wie GET-Request das Cookie verwenden.
  • Streng: Verwenden Sie das Cookie nur im Kontext derselben Site.

Wenn das Cookie kein SameSite -Attribut enthält, geht Google Chrome von der Funktionalität von SameSite =LAX aus.

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 (an beiden Enden inklusive)
  • Versionen des UC-Browsers auf Android vor Version 12.13.2

Konfigurieren von ADC-generierten Cookies

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 über das LB-Profil.
  3. Wenn Sie ein LB-Profil verwenden, legen Sie das LB-Profil auf einen virtuellen Lastausgleichsserver fest.
  4. Wenn Sie das Cookie-Attribut für berechnete ADC verwenden, konfigurieren Sie die zugehörige Richtlinie zum Umschreiben.

Hinweis:

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

Sie können die vom ADC generierten Cookie-Attribute auf folgende Weise festlegen:

  • Festlegen der ADC-Cookie-Attribute in Lastenausgleichsparametern
  • Festlegen der ADC-Cookie-Attribute im Load Balancing-Profil

Um eine Richtlinie einheitlich auf von 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 Attribut ermöglicht es Ihnen, die Cookie-Attribute bedingungslos in das von ADC generierte Cookie einzufügen.

Geben Sie an der Eingabeaufforderung Folgendes ein:

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

Beispiel:

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

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

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

Konfigurieren von Variablen mit der GUI

  1. Navigieren Sie zu AppExpert > Variables, und klicken Sie auf Hinzufügen.
  2. Wählen Sie auf der Seite “Variable erstellen “ im Dropdownmenü Geltungsbereich als Transaktion und als Text eingeben aus.

    Variable für ADC-Cookies erstellen

  3. Geben Sie weitere Details ein und klicken Sie auf Erstellen.

Erstellen einer Aufgabe mit der GUI

Nachdem Sie eine Variable konfiguriert haben, können Sie einen Wert zuweisen oder die Operation angeben, die für die Variable ausgeführt werden soll, indem Sie eine Zuweisung erstellen.

  1. Navigieren Sie zu AppExpert > Zuweisungenund klicken Sie auf Hinzufügen.
  2. Geben Sie auf der Seite Zuweisung erstellen die Details ein und klicken Sie auf Erstellen.

    Erstellen einer Zuweisung für ADC-Variablen

  1. Navigieren Sie zu Traffic Management > Load Balancing > Load Balancing-Parameter ändern.

    Ändern von lb-Parametern

  2. Geben Sie im Bereich Load Balancing-Parameter konfigurieren die entsprechenden Werte für eines der Felder ein, basierend auf Ihren Anforderungen:

    • Literales ADC-Cookie-Attribut
    • Berechnetes ADC-Cookie-Attribut

    konfigurieren Sie lb parameters.png

  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 Attribute im LB-Profil ermöglicht es Ihnen, die Cookie-Attribute bedingungslos in das von 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>
<!--NeedCopy-->

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

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. Stellen Sie dieses LB-Profil dann auf einen virtuellen LB-Server ein.

Geben Sie an der Eingabeaufforderung Folgendes ein:

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

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
<!--NeedCopy-->
  1. Navigieren Sie zu Traffic Management > Load Balancing > Virtuelle Server.
  2. Wählen Sie einen virtuellen Server aus, und klicken Sie auf Bearbeiten.
  3. Klicken Sie im Abschnitt 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 Dropdownmenü LB-Profil aus.

    Profile hinzufügen

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

    Literal-berechnete Attribute in LB profile.png

  1. Klicken Sie auf OK.
  2. Legen Sie das erstellte LB-Profil auf den in Schritt 1erstellten virtuellen LB-Server fest.

Überprüfen der ns-Variablen

Um zu überprüfen, ob die ADC nss-Variable in LB-Parametern oder LB-Profil angemessen konfiguriert ist, verwenden Sie den Parameter show lb oder show lb profile.

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

Warnmeldung Gründe
Die NS-Variable ist nicht konfiguriert. Konfigurieren Sie es mit Typ text () und Scope Transaction 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.
Die konfigurierte Wert-Max-Größe für die NS-Variable ist größer als 255. Der für die NS-Variable konfigurierte Wert beträgt mehr 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
<!--NeedCopy-->

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

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

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 Content Switching-Server für das Einfügen der Cookie-Attribute 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_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-->