Citrix ADC als OAuth IdP
Citrix ADC kann jetzt mit dem OpenID-Connect (OIDC)-Protokoll als Identitätsanbieter konfiguriert werden. Das OIDC-Protokoll stärkt die Funktionen von Citrix ADC zur Identitätsbereitstellung. Sie können jetzt mit einem Single Sign-On auf die unternehmensweit gehostete Anwendung zugreifen, da OIDC mehr Sicherheit bietet, indem das Benutzerkennwort nicht übertragen wird, sondern Token mit einer bestimmten Lebensdauer verwendet werden. OpenID ist auch für die Integration in Nicht-Browser-Clients wie Apps und Dienste konzipiert. Daher wird das OIDC-Protokoll von vielen Implementierungen weitgehend übernommen.
Hinweis:
Citrix ADC muss Version 12.1 oder höher verwenden, um als OAuth-IdP mit dem OIDC-Protokoll zu arbeiten.
Vorteile der Verwendung von Citrix ADC als OAuth IdP
- Eliminiert den Aufwand für die Pflege mehrerer Authentifizierungskennwörter, da der Benutzer über eine einzige Identität in einer Organisation verfügt.
- Bietet eine robuste Sicherheit für Ihr Kennwort, da das Kennwort nur mit Ihrem Identitätsanbieter und nicht mit einer Anwendung, auf die Sie zugreifen, freigegeben wird.
- Vorausgesetzt, enorme Interoperabilität mit verschiedenen Systemen, die es den gehosteten Anwendungen erleichtern, OpenID zu akzeptieren.
Hinweis
Citrix ADC Advanced Edition und höher ist erforderlich, damit die Lösung funktioniert.
So konfigurieren Sie Citrix ADC mit der GUI als OAuth-IdP
-
Navigieren Sie zu Konfiguration > Sicherheit > AAA-Anwendungsdatenverkehr > Richtlinien > Authentifizierung > Erweiterte Richtlinien > OAuth IdP.
-
Klicken Sie auf Profil und dann auf Hinzufügen.
Legen Sie im Bildschirm Authentifizierung erstellen OAuth IDP-Profil Werte für die folgenden Parameter fest und klicken Sie auf Erstellen.
-
Name − Name des Authentifizierungsprofils. Muss mit einem Buchstaben, einer Zahl oder dem Unterstrich (_) beginnen und darf nur Buchstaben, Zahlen und Bindestrich (-), Punkt (.), Pfund (#), Leerzeichen (), At (@), Gleichheitszeichen (=), Doppelpunkt (:) und Unterstriche enthalten. Kann nicht geändert werden, nachdem das Profil erstellt wurde.
- Client ID: Eindeutige Zeichenfolge zur SP-Identifizierung. Der Autorisierungsserver leitet anhand dieser ID die Client-Konfiguration ab. Maximale Länge: 127.
- Client Secret: Geheime Zeichenfolge, die vom Benutzer und Autorisierungsserver erstellt wird. Maximale Länge: 239.
- URL umleiten − Endpunkt für SP, an dem Code/Token gepostet werden muss.
- Name des Ausstellers − Identität des Servers, dessen Token akzeptiert werden sollen. Maximale Länge: 127.
- Zielgruppe − Zielempfänger für das Token, das vom IdP gesendet wird. Dies könnte vom Empfänger überprüft werden.
- Skew Time − Diese Option gibt die zulässige Taktverzerrung in der Anzahl von Minuten an, die Citrix ADC für ein eingehendes Token zulässt. Wenn skewTime beispielsweise 10 ist, dann wäre das Token von (aktuelle Zeit − 10) Minuten bis (aktuelle Zeit + 10) Minuten gültig, also insgesamt 20 Minuten. Standardwert: 5.
- Standard-Authentifizierungsgruppe − Eine Gruppe, die der internen Gruppenliste der Sitzung hinzugefügt wurde, wenn dieses Profil von IdP ausgewählt wird, das im nFactor Flow verwendet werden kann. Es kann im Ausdruck (AAA.USER.IS_MEMBER_OF (“xxx”)) für Authentifizierungsrichtlinien verwendet werden Identifizieren Sie den nFactor-Flow der vertrauenden Partei. Maximale Länge: 63
A group added to the session for this profile to simplify policy evaluation and help in customizing policies. This is the default group that is chosen when the authentication succeeds in addition to the extracted groups. Maximum Length: 63.
-
-
Klicken Sie auf Richtlinien, und klicken Sie auf Hinzufügen.
-
Legen Sie im Fenster Richtlinie für OAuth IDP-Authentifizierung erstellen Werte für die folgenden Parameter fest und klicken Sie auf Erstellen.
- Name: Name der Authentifizierungsrichtlinie.
- Action: Name des zuvor erstellten Profils.
- Log Action: Name der Nachrichtenprotokollaktion, die verwendet werden soll, wenn eine Anforderung mit dieser Richtlinie übereinstimmt. Keine obligatorische Einreichung.
- Aktion mitundefiniertem Ergebnis − Aktion, die ausgeführt werden soll, wenn das Ergebnis der Richtlinienbewertung nicht bestraft wird (UNDEF). Kein Pflichtfeld.
- Ausdruck − Standardsyntaxausdruck, den die Richtlinie verwendet, um auf eine bestimmte Anfrage zu antworten. Beispiel: true.
- Comments: Kommentare zu der Richtlinie.
Binden der OAuthIDP-Richtlinie und der LDAP-Richtlinie an den virtuellen Authentifizierungsserver
-
Navigieren Sie zu Konfiguration > Sicherheit > AAA-Anwendungsdatenverkehr > Richtlinien > Authentifizierung > Erweiterte Richtlinien > Aktionen > LDAP.
-
Klicken Sie im Bildschirm LDAP-Aktionen auf Hinzufügen.
-
Legen Sie im Bildschirm Authentifizierungs-LDAP-Server erstellen die Werte für die folgenden Parameter fest und klicken Sie auf Erstellen.
- Name − Der Name der LDAP-Aktion
- ServerName/ServerIP − Bereitstellung von FQDN oder IP des LDAP-Servers
- Wählen Sie geeignete Werte für Sicherheitstyp, Port, Servertyp, Timeout
- Stellen Sie sicher, dass Authentifizierung aktiviert ist
- Basis-DN − Basis, von der aus die LDAP-Suche gestartet werden soll. Zum Beispiel dc=aaa, dc = local.
-
Administrator Bind DN: Benutzername der Bindung an den LDAP-Server. Beispiel:
admin@aaa.local
. - Administratorkennwort/Kennwort bestätigen: Kennwort zum Binden von LDAP
- Klicken Sie auf Verbindung testen, um Ihre Einstellungen zu testen.
- Attribut für Server-Anmeldename: Wählen Sie “sAMAccountName”
- Andere Felder sind nicht Pflichtfelder und können daher nach Bedarf konfiguriert werden.
-
Navigieren Sie zu Konfiguration > Sicherheit > AAA-Anwendungsdatenverkehr > Richtlinien > Authentifizierung > Erweiterte Richtlinien > Richtlinie.
-
Klicken Sie im Bildschirm Authentifizierungsrichtlinien auf Hinzufügen.
-
Legen Sie auf der Seite Authentifizierungsrichtlinie erstellen die Werte für die folgenden Parameter fest und klicken Sie auf Erstellen.
- Name − Name der LDAP-Authentifizierungsrichtlinie.
- Aktionstyp − Wählen Sie LDAP aus.
- Aktion − Wählen Sie die LDAP-Aktion aus.
- Ausdruck − Standardsyntaxausdruck, den die Richtlinie verwendet, um auf bestimmte Anforderungen zu antworten. Beispiel: true**.
Die OAuth-Funktion unterstützt jetzt die folgenden Funktionen in der Token-API von Relying Party (RP) und von der IdP-Seite von Citrix Gateway und Citrix ADC.
-
Unterstützung von PKCE (Proof Key for Code Exchange)
-
Unterstützung für client_assertion
So konfigurieren Sie Citrix ADC als IdP mit dem OIDC-Protokoll über die CLI
Geben Sie an der Eingabeaufforderung die folgenden Befehle ein:
add authentication OAuthIDPProfile <name> [-clientID <string>][-clientSecret ][-redirectURL <URL>][-issuer <string>][-audience <string>][-skewTime <mins>] [-defaultAuthenticationGroup <string>]
add authentication OAuthIdPPolicy <name> -rule <expression> [-action <string> [-undefAction <string>] [-comment <string>][-logAction <string>]
add authentication ldapAction aaa-ldap-act -serverIP 10.0.0.10 -ldapBase "dc=aaa,dc=local"
ldapBindDn <administrator@aaa.local> -ldapBindDnPassword <password> -ldapLoginName sAMAccountName
add authentication policy aaa-ldap-adv-pol -rule true -action aaa-ldap-act
bind authentication vserver auth_vs -policy <ldap_policy_name> -priority 100 -gotoPriorityExpression NEXT
bind authentication vserver auth_vs -policy <OAuthIDPPolicyName> -priority 5 -gotoPriorityExpression END
bind vpn global –certkey <>
<!--NeedCopy-->
Hinweis
Sie können mehr als einen Schlüssel binden. Öffentliche Teile von Zertifikaten, die gebunden sind, werden als Antwort auf gesendet
jwks\_uri query (https://gw/oauth/idp/certs)
.Ab Version Citrix ADC 13.0−85.19 unterstützt der introspektive OAuth-IdP-Endpunkt die Eigenschaft
active: true
Wenn der virtuelle Authentifizierungsserver als OAuth-IdP konfiguriert ist, muss die bekannte URL des OAuth-IdP-Discovery-Endpunkts angegeben werden.
https://<netscaler-oauth-idp-fqdn>/oauth/idp/.well-known/openid-configuration
Citrix ADC, das als OAuth-IdP konfiguriert ist, zeigt die Token-Endpunktauthentifizierungsmethoden
client_secret_post
,client_secret_jwt
,private_key_jwt
undclient_secret_basic
in der an den OAuth SP gesendeten.well-known-Endpoint
-Antwort nicht an.
Unterstützung von verschlüsselten Token im OIDC-Protokoll
Citrix ADC mit dem OIDC-Mechanismus unterstützt jetzt das Senden verschlüsselter Token zusammen mit signierten Token. Das Citrix ADC verwendet JSON-Webverschlüsselungsspezifikationen, um die verschlüsselten Token zu berechnen, und unterstützt nur die kompakte Serialisierung verschlüsselter Token. Um ein OpenID-Token zu verschlüsseln, benötigt ein Citrix ADC den öffentlichen Schlüssel der vertrauenden Partei (RP). Der öffentliche Schlüssel wird dynamisch erhalten, indem der bekannte Konfigurationsendpunkt der angehörenden Partei abgerufen wird.
Eine neue Option “relyingPartyMetadataURL” wurde im Profil “authentication OAuthIDPProfile” eingeführt.
So konfigurieren Sie den Endpunkt der Anbieterpartei mit CLI
Geben Sie in der Befehlszeile Folgendes ein:
```set authentication OAuthIDPProfile
- **relyingPartyMetadataURL** - Endpunkt, an dem Citrix ADC IdP Details über die konfigurierte Anbietergesellschaft abrufen kann. Die Metadatenantwort muss Endpunkte für jwks_uri für öffentliche RP-Schlüssel enthalten.
- **refreshInterval** - Definiert die Rate, mit der dieser Endpunkt abgefragt werden muss, um die Zertifikate in Minuten zu aktualisieren.
- **status** - Spiegelt den Status des Abrufvorgangs wider. Der Status ist abgeschlossen, sobald Citrix ADC die öffentlichen Schlüssel erfolgreich abgerufen hat.
**Beispiel**
```
set authentication OAuthIDPProfile sample_profile -relyingPartyMetadataURL https://rp.customer.com/metadata -refreshInterval 50 -status < >
<!--NeedCopy-->
Nachdem der Endpunkt konfiguriert ist, fragt Citrix ADC zunächst den bekannten Endpunkt der vertrauenden Partei ab, um die Konfiguration zu lesen. Derzeit verarbeitet Citrix ADC nur den Endpunkt ‘jwks_uri’.
- Wenn der ‘jwks_uri’ in der Antwort nicht vorhanden ist, ist der Status des Profils nicht vollständig.
- Wenn der ‘jwks_uri’ in der Antwort vorhanden ist, fragt Citrix ADC diesen Endpunkt auch ab, um die öffentlichen Schlüssel der angehörenden Partei zu lesen.
Hinweis: Für die Token-Verschlüsselung werden nur Algorithmen des Verschlüsselungstyps RSAES-OAEP und AES GCM unterstützt.
Unterstützung von benutzerdefinierten Attributen auf OpenID Connect
OpenID-vertrauende Parteien benötigen möglicherweise mehr als einen Benutzernamen oder einen Benutzerprinzipalnamen (UPN) im Token, um das Benutzerprofil zu erstellen oder Autorisierungsentscheidungen zu treffen. In den meisten Fällen müssen die Benutzergruppen Autorisierungsrichtlinien für den Benutzer anwenden. Manchmal sind für die Bereitstellung eines Benutzerkontos weitere Details wie der Vor- oder Nachname erforderlich.
Citrix ADC, das als IdP konfiguriert ist, kann verwendet werden, um zusätzliche Attribute im OIDCid_token mithilfe von Ausdrücken zu senden. Erweiterte Richtlinienausdrücke werden verwendet, um die benutzerdefinierten Attribute gemäß der Anforderung zu senden. Der Citrix IdP wertet die Ausdrücke aus, die den Attributen entsprechen, und berechnet dann das endgültige Token.
Citrix ADC wendet JSONify
automatisch in den Ausgabedaten an. Beispielsweise sind Zahlen (wie SSN) oder boolesche Werte (true oder false) nicht von Anführungszeichen umgeben. Mehrwertige Attribute, wie Gruppen, werden innerhalb einer Array-Markierung platziert (“[” und “]”). Die komplexen Typattribute werden nicht automatisch berechnet, und Sie können den PI-Ausdruck dieser komplexen Werte entsprechend Ihrer Anforderung konfigurieren.
So konfigurieren Sie den Endpunkt der Anbieterpartei mit CLI
Geben Sie in der Befehlszeile Folgendes ein:
set oauthidpprofile <name> -attributes <AAA-custom-attribute-pattern>
<!--NeedCopy-->
Die<AAA-custom-attribute-pattern>
kann beschrieben werden als:
Attribute1=PI-Expression@@@attribute2=PI-Expression@@@
‘attribute1’,’attribute2’ are literal strings that represent the name of the attribute to be inserted in the id_token.
Hinweis:
Im folgenden Beispiel kann der Höchstwert des Ausdrucks
q{myname=http.req.user.name@@@ssn="123456789"@@@jit="false"@@@groups=http.req.user.groups}
2000 Byte betragen. Es enthält 4 benutzerdefinierte Attribute (myname, ssn, jit, groups). Der Höchstwert jedes benutzerdefinierten Attributs beträgt 10000 Byte. Beispielsweise kann das Gruppenattribut (basierend auf dem PI-Ausdruckhttp.req.user.groups
ausgewertet) bis zu 10000 Byte an Daten im OIDCid_token enthalten.Beispiel:
set oauthidpprofile sample_1 -attributes q"{myname=http.req.user.name@@@ssn="123456789"@@@jit="false"@@@groups=http.req.user.groups}"
- Der vorangegangene PI-Ausdruck ist ein erweiterter Richtlinienausdruck, der den Wert darstellt, der für das Attribut verwendet werden soll. Der PI-Ausdruck kann verwendet werden, um ein String-Literal zu senden, z. B. “‘hartcodierter String” ‘. Das Zeichenkettenliteral ist von doppelten Anführungszeichen um einfache Anführungszeichen oder um ein Startmuster herum von doppelten Anführungszeichen umgeben (das Startmuster ist
"q()"
). Wenn der Wert des Attributs kein String-Literal ist, wird der Ausdruck zur Laufzeit ausgewertet und sein Wert wird im Token gesendet. Wenn der Wert zur Laufzeit leer ist, wird das entsprechende Attribut dem ID-Token nicht hinzugefügt.- Wie im Beispiel definiert, ist “false” eine literale Zeichenfolge für das Attribut “jit”. Außerdem hat
ssn
einen hartcodierten Wert als Referenz. Gruppen undmyname
sind PI-Ausdrücke, die Zeichenfolgen ergeben.
Unterstützung für aktiv-aktive GSLB-Bereitstellungen auf Citrix Gateway
Citrix Gateway, das mit dem OIDC-Protokoll als Identity Provider (IdP) konfiguriert ist, kann aktiv-aktive GSLB-Bereitstellungen unterstützen. Die aktiv-aktive GSLB-Bereitstellung auf dem Citrix Gateway IdP ermöglicht den Lastausgleich einer eingehenden Benutzeranmeldeanforderung an mehreren geografischen Standorten.
Wichtig
Citrix empfiehlt, Zertifizierungsstellenzertifikate an den SSL-Dienst zu binden und die Zertifikatvalidierung für den SSL-Dienst zu aktivieren, um die Sicherheit zu erhöhen.
Weitere Informationen zur Konfiguration eines GSLB-Setups finden Sie unter Beispiel für eine GSLB-Setup und -Konfiguration.