NetScaler als SAML SP
Der SAML-Dienstanbieter (SP) ist eine vom Dienstanbieter bereitgestellte SAML-Entität. Wenn ein Benutzer versucht, auf eine geschützte Anwendung zuzugreifen, wertet der SP die Client-Anfrage aus. Wenn der Client nicht authentifiziert ist (kein gültiges NSC_TMAA- oder NSC_TMAS-Cookie hat), leitet der SP die Anfrage an den SAML-Identitätsanbieter (IdP) weiter.
Der SP validiert auch SAML-Assertionen, die vom IdP empfangen werden.
Wenn die NetScaler Appliance als SP konfiguriert ist, empfängt ein virtueller Server für das Verkehrsmanagement (Load Balancing oder Content Switching) alle Benutzeranfragen, die der entsprechenden SAML-Aktion zugeordnet sind.
Die NetScaler-Appliance unterstützt auch POST- und Redirect-Bindungen beim Abmelden.
Hinweis
Eine NetScaler-Appliance kann als SAML-SP in einer Bereitstellung verwendet werden, in der der SAML-IdP entweder auf der Appliance oder auf einem externen SAML-IdP konfiguriert ist.
Bei Verwendung als SAML-SP gilt eine NetScaler-Appliance:
-
Kann die Benutzerinformationen (Attribute) aus dem SAML-Token extrahieren. Diese Informationen können dann in den Richtlinien verwendet werden, die auf der NetScaler-Appliance konfiguriert sind. Wenn Sie beispielsweise die Attribute GroupMember und emailaddress extrahieren möchten, geben Sie in der SAMLAction den Parameter Attribute2 als GroupMember und den Parameter Attribute3 als emailaddress an.
Hinweis
Standardattribute wie Benutzername, Kennwort und Abmelde-URL dürfen in den Attributen 1—16 nicht extrahiert werden, da sie implizit analysiert und in der Sitzung gespeichert werden.
-
Kann Attributnamen von bis zu 127 Byte aus einer eingehenden SAML-Assertion extrahieren. Das vorherige Limit lag bei 63 Byte.
-
Unterstützt Post-, Redirect- und Artifact-Bindungen.
Hinweis
Verwenden Sie die Umleitungsbindung nicht für große Datenmengen, wenn die Assertion nach der Aufblähung oder Dekodierung größer als 10.000 ist.
-
Kann Assertionen entschlüsseln.
-
Kann mehrwertige Attribute aus einer SAML-Assertion extrahieren. Diese Attribute werden in Form von verschachtelten XML-Tags gesendet, wie zum Beispiel:
<AttributeValue> <AttributeValue>Value1</AttributeValue> <AttributeValue>Value2</AttributeValue> \</AttributeValue\>
Hinweis
Ab NetScaler 13.0 Build 63.x und höher wurde die individuelle maximale Länge für SAML-Attribute auf maximal 40.000 Byte erhöht. Die Größe aller Attribute darf 40.000 Byte nicht überschreiten.
Bei Vorlage von vorherigem XML kann die NetScaler-Appliance sowohl Value1 als auch Value2 als Werte eines bestimmten Attributs extrahieren, im Gegensatz zur alten Firmware, die nur Value1 extrahiert.
-
Kann die Gültigkeit einer SAML-Assertion angeben.
Wenn die Systemzeit auf NetScaler SAML IdP und Peer-SAML-SP nicht synchron ist, werden die Nachrichten möglicherweise von beiden Parteien ungültig gemacht. Um solche Fälle zu vermeiden, können Sie jetzt die Zeitdauer festlegen, für die die Assertionen gültig sind.
Diese Dauer, die als “Skew Time” bezeichnet wird, gibt die Anzahl der Minuten an, für die die Nachricht akzeptiert werden kann. Die Skew Time kann auf dem SAML-SP und dem SAML-IdP konfiguriert werden.
-
Kann ein zusätzliches Attribut namens ‘ForceAuth’ in der Authentifizierungsanfrage an einen externen IdP (Identitätsanbieter) senden. Standardmäßig ist ForceAuthn auf “False” gesetzt. Es kann auf “True” gesetzt werden, um dem IdP vorzuschlagen, die Authentifizierung trotz des vorhandenen Authentifizierungskontextes zu erzwingen. Außerdem führt NetScaler SP eine Authentifizierungsanforderung im Abfrageparameter aus, wenn es mit Artefaktbindung konfiguriert ist.
Konfigurieren der NetScaler-Appliance als SAML SP mit der CLI
-
Konfigurieren Sie eine SAML SP-Aktion.
Beispiel
Mit dem folgenden Befehl wird eine SAML-Aktion hinzugefügt, die nicht authentifizierte Benutzeranforderungen umleitet.
add authentication samlAction SamlSPAct1 -metadataUrl "https://ksidp1.ksaaa.local/metadata/samlidp/SAML_IDP_profile" -samlIdPCertName nssp -preferredbindtype SSOREDIRECT -samlSigningCertName nssp –samlRedirectUrl https://auth1.example.com -relaystateRule "AAA.LOGIN.RELAYSTATE.EQ(\"https://lb.example1.com/\")"
Wichtige Hinweise
- Das Zertifikat, das für
-samlIdPCertName
im samlAction-Befehl angegeben wurde, muss mit dem entsprechenden Zertifikat von IdP übereinstimmen, damit die Signaturüberprüfung erfolgreich ist. - SAML unterstützt nur das RSA-Zertifikat. Andere Zertifikate wie HSM und FIPS werden nicht unterstützt.
- Es wird empfohlen, einen vollständigen Domänennamen mit einem abschließenden ‘/’ im Ausdruck zu verwenden.
- Wenn der virtuelle Authentifizierungsserver als SAML-IdP konfiguriert ist, lautet die Metadaten-URL, die in der SAML-SP-Aktion verwendet werden muss.
https://<netscaler-saml-idp-fqdn>/metadata/samlidp/SAML_IDP_profile
- Wenn mehrere SAML-Richtlinien Teil einer IdP-Kette sind, reicht es aus, eine Relay-State-Regel nur für die erste SAML-Richtlinie zu konfigurieren.
Einzelheiten zu diesem Befehl finden Sie unter https://developer-docs.netscaler.com/en-us/adc-command-reference-int/current-release/authentication/authentication-samlaction und https://support.citrix.com/article/CTX316577.
- Das Zertifikat, das für
-
Konfigurieren Sie die SAML-Richtlinie.
Beispiel:
Der folgende Befehl definiert eine SAML-Richtlinie, die die zuvor definierte SAML-Aktion auf den gesamten Datenverkehr anwendet.
add authentication policy SamlSPPol1 -rule true -action SamlSPAct1
-
Binden Sie die SAML-Richtlinie an den virtuellen Authentifizierungsserver.
Beispiel
Der folgende Befehl bindet die SAML-Richtlinie an einen virtuellen Authentifizierungsserver mit dem Namen “av_saml”.
bind authentication vserver av_saml -policy SamlSPPol1
-
Binden Sie den virtuellen Authentifizierungsserver an den entsprechenden virtuellen Server für das Verkehrsmanagement.
Beispiel
Der folgende Befehl fügt einen virtuellen Lastausgleichsserver mit dem Namen “lb1_ssl” hinzu und ordnet den virtuellen Authentifizierungsserver mit dem Namen “av_saml” dem virtuellen Lastausgleichsserver zu.
add lb vserver lb1_ssl SSL 10.217.28.224 443 -persistenceType NONE -cltTimeout 180 -AuthenticationHost auth1.example.com -Authentication ON -authnVsName av_saml
Einzelheiten zu diesem Befehl finden Sie unter https://developer-docs.citrix.com/projects/citrix-adc-command-reference/en/latest/authentication/authentication-samlAction.
Konfigurieren einer NetScaler-Appliance als SAML SP mit der GUI
-
Konfigurieren Sie eine SAML SP-Aktion.
-
Navigieren Sie zu Sicherheit > AAA-Richtlinien > Authentifizierung > Grundrichtlinien > SAML.
-
Wählen Sie die Registerkarte Server aus, klicken Sie auf Hinzufügen, geben Sie Werte für die folgenden Parameter ein und klicken Sie auf Erstellen.
Parameter-Beschreibungen:
-
Name - Name des Servers.
-
Umleitungs-URL — URL, mit der sich Benutzer authentifizieren. Einige IdPs haben spezielle URLs, die nur erreichbar sind, wenn sie sich in einem SAML-Setup befinden.
-
Single Logout URL — URL, die so angegeben ist, dass NetScaler erkennen kann, wann der Client zurück an den IdP gesendet werden muss, um den Abmeldevorgang abzuschließen.
-
SAML-Bindung — Ein Mechanismus, der verwendet wird, um SAML-Anforderungs- und Responder-Nachrichten zwischen dem SP und dem IdP zu transportieren. Wenn NetScaler als SP fungiert, unterstützt es Post-, Redirect- und Artifact-Bindungen. Die Standardbindungsmethode ist POST.
Hinweis:
Für die Artefaktbindung muss der Transportmechanismus auf dem SP und dem IdP derselbe sein.
-
Logout-Bindung — Gibt den Transportmechanismus von SAML-Abmeldungsnachrichten an. Der Standard-Bindungsmechanismus ist Post.
-
IdP-Zertifikatsname − IdPCert-Zertifikat (Base64), das unter dem SAML-Signaturzertifikat vorhanden ist.
-
SAML-IDP-Metadaten-URL − Wird verwendet, um die SAML-Metadaten abzurufen. Sie müssen den IdP-Zertifikatsnamen und die Umleitungs-URL-Felder nicht angeben, wenn die Metadaten-URL vorhanden ist.
Wenn Sie die Metadaten-URL konfigurieren, sendet der SAML-IdP die Bindungstypoptionen für SSO und Abmelden an NetScaler. Standardmäßig wählt NetScaler Redirect als Bindungstyp für Logout und Post als Bindungstyp für SSO aus.
Das Folgende ist ein Beispiel für die SAML-IdP-Antwort, die die Optionen für den Bindungstyp enthält:
<?xml version=\"1.0\"?> <md:EntityDescriptor xmlns:md=\"urn:oasis:names:tc:SAML:2.0:metadata\" ID=\"_b4743282f0a1e14164b8ccd429e8cee2\" entityID=\"192.0.2.255\"> <md:SingleLogoutService Binding=\"urn:oasis:names:tc:SAML:2.0:bindings:HTTP -Redirect\" Location=\"https://192.0.2.255 /cgi/tmlogout_redirect1\"></md:SingleLogoutService> <md:SingleLogoutService Binding=\"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST\" Location=\"https://192.0.2.255 /cgi/tmlogout_post1\"></md:SingleLogoutService> <md:SingleSignOnServ ice Binding=\"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST\" Location=\"https://192.0.2.255 /saml/login_post1\"> </md:SingleSignOnService> <md:SingleSignOnService Binding=\"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect\" Location=\"https://192.0.2.255 /saml/login_redirect1\"> </md:SingleSignOnService> </md:EntityDescriptor>
Sie können die Standard-Bindungstypen für SSO und Logout ändern, indem Sie den Parameter Bevorzugter Bindungstyp konfigurieren.
-
Bevorzugter Bindungstyp − Gibt den bevorzugten Bindungstyp für SSO und Abmeldung an. Diese Option ist ab Version 14.1 Build 25.x verfügbar.
In der vorherigen SAML-IdP-Antwort wählt NetScaler für SSO Post als SAML-Bindung aus und wählt standardmäßig
https://192.0.2.255/saml/login_post1
aus. Sie können dieses Verhalten ändern, indem Sie das KontrollkästchenSSOREDIRECT
als bevorzugten Bindungstyp auswählen.In der vorherigen SAML-IdP-Antwort wählt NetScaler für Logout Redirect als Abmelde-Bindungstyp aus und wählt standardmäßig
https://192.0.2.255/cgi/tmlogout_redirect1
aus. Sie können dieses Verhalten ändern, indem Sie das KontrollkästchenLOGOUTPOST
als bevorzugten Bindungstyp auswählen.Sie können entweder einen oder beide Bindungstypen nach Ihren Wünschen konfigurieren.
-
Metadaten-Aktualisierungsintervall (Minuten) − Intervall in Minuten für das Abrufen von Metadaten von der angegebenen Metadaten-URL.
-
Benutzerfeld — Abschnitt des SAML-Authentifizierungsformulars des IdP, der den Benutzernamen enthält, den SP bei Bedarf extrahieren kann.
-
Signieren des Zertifikatsnamens - Wählen Sie das SAML SP-Zertifikat (mit privatem Schlüssel) aus, das NetScaler verwendet, um Authentifizierungsanforderungen an den IdP zu signieren. Das gleiche Zertifikat (ohne privaten Schlüssel) muss in den IdP importiert werden, damit der IdP die Signatur der Authentifizierungsanfrage überprüfen kann. Die meisten IdPs benötigen den Namen des Signaturzertifikats nicht.
-
IssuerName — Identifier. Eindeutige ID, die sowohl auf dem SP als auch auf dem IdP angegeben ist, um den Dienstanbieter untereinander zu identifizieren.
- Unsignierte Assertion ablehnen — Option, die Sie angeben können, wenn die Assertionen des IdP signiert werden sollen. Die Standardeinstellung ist EIN.
- ON: Lehnt Assertions ohne Signatur ab
- STRICT: Stellt sicher, dass sowohl Antwort als auch Assertion signiert sind
- OFF: Erlaubt unsignierte Assertions
-
Zielgruppe - Zielgruppe, für die eine vom IdP gesendete Assertion anwendbar ist. Dies ist in der Regel ein Entitätsname oder eine URL, die den Dienstanbieter darstellt.
-
Signaturalgorithmus — Algorithmus, der zum Signieren/Verifizieren von SAML-Transaktionen verwendet wird. Der Standardwert ist RSA-SHA256.
-
Digest-Methode — Algorithmus, der zur Berechnung/Überprüfung von Digest für SAML-Transaktionen verwendet wird. Der Standardwert ist SHA256.
-
Relay-State-Regel — Weitere Informationen zu diesem
relaystateRule
Parameter finden Sie unter Zu beachtende Punkte zum Parameter. -
State-Check-Regel — Konfigurieren Sie die Ausdrücke, die ausgewertet werden, um HTTP-Anfragen auf SAML-Endpunkten zu validieren.
-
Standardauthentifizierungsgruppe — Die Standardgruppe, die zusätzlich zu den extrahierten Gruppen ausgewählt wird, wenn die Authentifizierung erfolgreich ist.
-
Feld Gruppenname — Name des Tags in einer Assertion, die Benutzergruppen enthält.
-
Skew Time (Minuten) — Diese Option gibt den Zeitversatz in Minuten an, den der NetScaler Service Provider für eine eingehende Assertion zulässt. Wenn Sie beispielsweise die Skew-Zeit um 16:00 Uhr auf 10 Minuten festlegen, ist die SAML-Assertion von 15:50 bis 16:10 gültig, also insgesamt 20 Minuten. Die Standardschiefzeit beträgt 5 Minuten.
-
Zwei Faktoren — Aktiviert die zweite Faktorauthentifizierung nach SAML.
-
Assertion Consumer Service Index — Index/ID des Metadateneintrags, der dieser Konfiguration entspricht.
-
Dienstindex für den Attributverbrauch — Index/ID der Attributspezifikation beim IdP. Der IdP findet die vom SP angeforderten Attribute mithilfe dieses Indexes und sendet diese Attribute in der SAML-Assertion.
-
Angeforderter Authentifizierungskontext — Gibt die Kontextanforderungen der in der Antwort zurückgegebenen Authentifizierungsanweisungen an.
-
Authentifizierungsklassentypen — Gibt die Authentifizierungsklassentypen an, die vom IdP angefordert werden.
-
Benutzerdefinierte Authentifizierungsklassentypen — Gibt die benutzerdefinierte Authentifizierungsklassenreferenz an, die als Teil der Authentifizierungsanfrage gesendet wird, die vom SP an den SAML-IdP gesendet wird.
-
Fingerabdruck senden — Sendet den Fingerabdruck anstelle des Zertifikats in der SAML-Anfrage.
-
Benutzername erzwingen — Wählen Sie aus, ob der aus der SAML-Assertion extrahierte Benutzername auf der Anmeldeseite bearbeitet werden kann, während eine zweite Faktorauthentifizierung durchgeführt wird.
-
Authentifizierung erzwingen — Erzwingt die Authentifizierung bei dem IdP, der die Anforderung von NetScaler empfängt.
- SAML-Antwort speichern — Speichert die gesamte SAML-Antwort, solange die Benutzersitzung aktiv ist.
-
-
-
Erstellen Sie eine entsprechende SAML-Richtlinie.
Navigieren Sie zu Sicherheit > AAA-Application Traffic > Policies > Authentication > Advanced Policies > Policy und klicken Sie auf Hinzufügen.
Geben Sie auf der Seite SAML-Authentifizierungsrichtlinie erstellen die folgenden Details an:
- Name — Geben Sie einen Namen für die SAML-Richtlinie an.
- Aktionstyp — Wählen Sie SAML als Authentifizierungsaktionstyp aus.
- Aktion — Wählen Sie das SAML-Serverprofil aus, an das die SAML-Richtlinie gebunden werden soll.
- Ausdruck — Zeigt den Namen der Regel oder des Ausdrucks an, anhand dessen die SAML-Richtlinie bestimmt, ob sich der Benutzer beim SAML-Server authentifizieren muss. Stellen Sie im Textfeld den Wert “rule = true” ein, damit die SAML-Richtlinie wirksam wird und die entsprechende SAML-Aktion ausgeführt wird.
-
Binden Sie die SAML-Richtlinie an den virtuellen Authentifizierungsserver.
Navigieren Sie zu Sicherheit > AAA - Anwendungsdatenverkehr > Virtuelle Server, und ordnen Sie die SAML-Richtlinie dem virtuellen Authentifizierungsserver zu.
-
Ordnen Sie den Authentifizierungsserver dem entsprechenden virtuellen Verkehrsverwaltungsserver zu.
Navigieren Sie zu Traffic Management > Load Balancing (oder Content Switching) > Virtuelle Server, wählen Sie den virtuellen Server aus und ordnen Sie ihm den virtuellen Authentifizierungsserver zu.
relaystateRule
Parameter zu beachtende Punkte
Zu dem Konfigurieren Sie im samlAction
Befehl einen Ausdruck für den RelaysStateRule-Parameter für eine reibungslose Authentifizierungsumleitung nach der SAML-Assertion. Der Ausdruck muss eine einzelne veröffentlichte Domäne oder eine Liste veröffentlichter Domänen enthalten, zu denen Benutzer vor einer Authentifizierungsumleitung eine Verbindung herstellen möchten. Beispielsweise muss der Ausdruck die Domänen des virtuellen Front-End-Servers (VPN, Load Balancing oder Content Switching) enthalten, der die SAML-Aktion für die Authentifizierung verwendet.
Wir empfehlen, vollständige Domänennamen mit einem abschließenden (/
) zu verwenden. Zum Beispiel https://example.com/
.
Die folgenden Beispiele beschreiben die RelayStateRule-Parameterkonfigurationsbeispiele für Szenarien mit einer Domäne und mehreren Domänen:
Für eine einzelne Domäne:
set samlAction <samlActionName> -relaystateRule "AAA.LOGIN.RELAYSTATE.EQ(\"https://example1.com/\")"
Für mehrere Domänen:
Verwenden Sie Mustersätze, um mehrere Domänen hinzuzufügen:
add patset test1
bind patset test1 "https://example1.com/"
bind patset test1 "https://test1.com/"
bind patset test1 "https://10.11.11.112/"
set samlAction <samlActionName> -relaystateRule AAA.LOGIN.RELAYSTATE.CONTAINS_ANY("test1")
<!--NeedCopy-->
So konfigurieren Sie den RegEx-Mustervergleich für den FQDN:
set samlaction <samlActionName> -relaystateRule "AAA.LOGIN.RELAYSTATE.REGEX_MATCH(re#^https://[a-zA-Z0-9]*.example1.com/#)"
<!--NeedCopy-->
Geben Sie das “^” -Zeichen (^https
) am Anfang der Domäne und den Schrägstrich “/” am Ende des Ausdrucks an (Beispiel: example1\.com/
).
Im Folgenden finden Sie einige Definitionen der RelayStateRule
Ausdrücke:
EQ: Exact match.
CONTAINS: Domain inclusion.
CONTAINS_ANY: Match any domain from a PATSET.
REGEX_MATCH: Regex-based matching.
<!--NeedCopy-->