ADC

Cookie-Attribute in ADC-generierten Cookies einfügen

Die Webadministratoren können andere Cookie-Attribute in die von der NetScaler 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 von ADC generierten Cookies, um Persistenz zu erreichen.

  • Persistenz von Load-Balancing-Cookies
  • Persistenz von Cookies für Lastausgleichsgruppen
  • Persistenz der GSLB-Site
  • 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 nicht sowohl das Literal ADC Cookie-Attribut als auch das berechnete ADC-Cookie-Attribut gleichzeitig für den Load-Balancing-Parameter oder in einem einzigen Load-Balancing-Profil 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 derselben Website (oder eines Erstanbieters) betrachtet. Wenn die mit einem Cookie verknüpfte Domain mit einem externen Dienst übereinstimmt und nicht mit der Website in der Adressleiste des Benutzers, wird dies als seitenübergreifender (oder Drittanbieter-) Kontext betrachtet.

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

Bis Februar 2020 wurde die SameSite-Eigenschaft nicht explizit in NetScaler ADC festgelegt. Der Browser nahm den Standardwert None an und hatte keine Auswirkungen auf die Citrix ADC-Bereitstellungen.

Mit dem 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: Gibt an, dass der Browser ein Cookie im standortübergreifenden Kontext nur bei sicheren Verbindungen verwenden soll.
  • 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, ü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. Die folgenden Browser lehnen beispielsweise 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 von 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 Load-Balancing-Server entweder über LB-Parameter oder über das LB-Profil fest.
  3. Wenn Sie ein LB-Profil verwenden, legen Sie das LB-Profil auf einen virtuellen Lastausgleichsserver fest.
  4. Wenn Sie sich dafür entscheiden, das berechnete ADC-Cookie-Attribut zu verwenden, konfigurieren Sie die entsprechende Rewrite-Richtlinie.

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 Lastausgleichsparametern
  • Festlegen der ADC-Cookie-Attribute im Load Balancing-Profil

Um eine Richtlinie einheitlich auf von ADC generierte Cookies aller auf der NetScaler 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 in der Befehlszeile Folgendes ein:

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

Beispiel:

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

Mit der Einstellung „Berechnetes ADC-Cookie-Attribut“ können Sie die Cookie-Attribute basierend auf den Client- oder Serverattributen unter bestimmten Bedingungen in das von ADC generierte Cookie einfügen.

Geben Sie in der Befehlszeile 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-->

Variablen mithilfe der GUI konfigurieren

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

    Variable für ADC-Cookies erstellen

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

Erstellen Sie eine Aufgabe mithilfe der GUI

Nachdem Sie eine Variable konfiguriert haben, können Sie einen Wert zuweisen oder die Operation angeben, die an der Variablen 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.
  1. Navigieren Sie zu Traffic Management > Load Balancing > Load Balancing-Parameter ändern.

    LB-Parameter ändern

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

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

    lib parameters.png konfigurieren

  3. Klicken Sie auf OK.

Um eine Richtlinie für eine bestimmte Anwendung anzuwenden, die auf der NetScaler 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 in der Befehlszeile 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 für das berechnete ADC-Cookie-Attribut im LB-Profil ermöglicht es Ihnen, die auf den Client- oder Serverattributen basierenden Cookie-Attribute unter bestimmten Bedingungen in das von ADC generierte Cookie einzufügen. Stellen Sie dann dieses LB-Profil auf einen virtuellen LB-Server ein.

Geben Sie in der Befehlszeile 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. Stellen Sie das erstellte LB-Profil auf den in Schritt 1erstellten virtuellen LB-Server ein.

Überprüfen Sie die ns-Variablenkonfiguration

Um zu überprüfen, ob die ADC-ns-Variable in LB-Parametern oder LB-Profil ordnungsgemäß konfiguriert ist, verwenden Sie die Befehle show lb parameter oder show lb profile.

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

Warnmeldung Gründe
Die NS-Variable ist nicht konfiguriert. Konfigurieren Sie es mit dem Typ text () und dem Gültigkeitsbereich der Transaktion für die Variable Die NS-Variable ist noch nicht konfiguriert.
Der Gültigkeitsbereich der konfigurierten NS-Variablen ist keine Transaktion. Die Variable ist konfiguriert, aber der Gültigkeitsbereich ist nicht auf „Transaktion“ gesetzt.
Der Variablentyp 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 gekürzt.

Beispielausgabe

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 show lb parameter Befehls 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.

  • Stellen Sie die ADC-Cookie-Attribute im LB-Profil ein (LB-vServer-Profile-1).
  • Stellen Sie den Literal ADC Cookie-Attributwert, zum Beispiel „sameSite=None“, im LB-Profil ein.
  • Stellen Sie das LB-Profil auf den virtuellen Lastausgleichsserver (LB-vServer-1) ein, 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 mithilfe des Berechneten ADC-Cookie-Attributs 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 Rewrite-Richtlinien wie folgt an den virtuellen Content Switching-Server statt an den virtuellen LB-Server:

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

    Hinweis:

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

  • Konfigurieren Sie die ns-Variable (cookieattribute_var), deren Type auf Text und Scope auf Transaction gesetzt ist.
  • Stellen Sie das berechnete ADC-Cookie-Attribut in den globalen LB-Parametern mithilfe der Variablen ns ein.
  • Legen Sie die Rewrite-Richtlinien (exception_samesite_attribute und append_samesite_attribute) für die virtuellen Content-Switching-Server fest, um die Cookie-Attribute einzufügen.
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-->