JWT-SSO-Sicherheitsanbieter in Jitterbit App Builder
Der JWT-SSO-Sicherheitsanbieter ist eine Implementierung eines benutzerdefinierten Single-Sign-On-Protokolls (SSO). Das Protokoll ermöglicht es einem vertrauenswürdigen Service, einen Benutzer in App Builder anzumelden. Dies wird erreicht, indem ein JSON Web Token (JWT) generiert und das Token über eine Browser-Umleitung an einen Authentifizierungsendpunkt übergeben wird.
Protokoll
Das JWT-SSO-Protokoll nutzt die folgenden Standards:
Endpunkte
Das JWT-SSO-Protokoll definiert zwei Service-Endpunkte.
- Authentifizierungsservice – gehostet von App Builder.
- Single-Sign-On-Service – gehostet vom vertrauenswürdigen Drittanbieter-Service.
Authentifizierungsservice
Der Authentifizierungsservice ist verantwortlich für:
- Authentifizierung eines JWT.
- Anmeldung des Benutzers in App Builder.
Beispiel:
https://example.com/Vinyl/signin-{Provider}
Dabei ist {Provider} das App-Builder-Sicherheitsanbieter-Schema. Siehe Konfiguration.
Parameter
Der Authentifizierungsservice-Endpunkt definiert die folgenden Parameter:
jwt– JSON Web Token. Erforderlich.return_to– Relative URI. Optional.
JWT
Der Parameter jwt enthält das JSON Web Token. JWTs sind URL-sicher, daher ist keine zusätzliche Codierung erforderlich.
JWTs müssen die folgenden Anforderungen erfüllen:
- Das JWT muss mit dem Algorithmus RS256 (RSA, SHA-256) signiert sein.
- Das JWT darf nicht verschlüsselt sein.
- Das JWT muss die folgenden registrierten Claims enthalten.
| Claim | Name | Typ | Zweck |
|---|---|---|---|
iss |
Issuer | StringOrURI | App Builder gleicht den Issuer mit dem konfigurierten Issuer des Sicherheitsanbieters ab und führt einen Vergleich unter Beachtung der Groß-/Kleinschreibung durch. |
sub |
Subject | StringOrURI | App Builder gleicht den Subject mit einem App-Builder-Benutzerkonto ab. |
aud |
Audience | URI | App Builder gleicht die Audience mit der konfigurierten Audience des Sicherheitsanbieters ab. Beispiel: https://example.com/Vinyl |
exp |
Expiration Time | NumericDate | App Builder validiert, dass das Ablaufdatum vor dem aktuellen Datum liegt, wobei die Zeitabweichung berücksichtigt wird. |
nbf |
Not Before | NumericDate | App Builder validiert, dass das aktuelle Datum und die aktuelle Uhrzeit größer als der Not-Before-Wert sind, wobei die Zeitabweichung berücksichtigt wird. |
iat |
Issued At | NumericDate | App Builder nutzt den Issued-At-Wert, um das Alter des JWT zu bestimmen. App Builder begrenzt das Zeitfenster, in dem ein Token akzeptiert wird, z. B. auf 5 Minuten. |
jti |
JWT ID | NumericDate | App Builder nutzt die JWT ID, um Replay-Attacken zu verhindern. |
Die registrierten JWT-Claims werden in Abschnitt 4.1 des JSON-Web-Token-Standards beschrieben.
Das JWT kann zusätzliche Claims enthalten. Wie bei allen App-Builder-Sicherheitsanbietern können die Claims:
- zur Bereitstellung von Benutzerkonten und zur Angabe der Sicherheitsgruppenmitgliedschaft verwendet werden
- auf Benutzerkontoeigenschaften wie Benutzername, E-Mail-Adresse oder Telefonnummer abgebildet werden.
- von Geschäftsregeln mit der mvSQL-Funktion
claim()zur Laufzeit aufgerufen werden.
Beispiel einer JWT-Payload:
{
"jti": "918b6e73-400d-479c-baa1-8e12f5fd78f4",
"iss": "example.com",
"aud": "https://example.com/Vinyl",
"sub": "Arthurd.Dent",
"iat": 1652473593,
"exp": 1652473893,
"groups": [
"Users",
"Employees",
"Sales"
]
}
return_to
Der Parameter return_to besteht aus einer URI. Die URI ist relativ zum App-Builder-Anwendungsstammverzeichnis. Sie muss mit einem führenden Schrägstrich beginnen.
/app/Sales/Leads?LeadId=1234
App Builder validiert den URI, um sich vor Open-Redirect-Angriffen zu schützen.
Methoden
Post
Standardmäßig akzeptiert der Authentifizierungsendpunkt einen Formular-Post:
POST /Vinyl/signin-JWTSSO HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 31
jwt={jwt}&return_to={return_to}
Get
Alternativ kann der Authentifizierungsendpunkt auch für die Annahme von GET-Anfragen konfiguriert werden:
GET /Vinyl/signin-JWTSSO?jwt={jwt}&return_to={return_to} HTTP/1.1
Host: example.com
Bei Verwendung der GET-Methode wird das JWT-Sicherheitstoken in der URL-Abfragezeichenfolge übergeben.
Beachten Sie Folgendes vor der Verwendung von GET:
GETbirgt zusätzliche Risiken, da Abfragezeichenfolgen häufig in Webserver-Protokolldateien geschrieben werden. Dies kann durch die Gewährleistung einer kurzen Lebensdauer von Sicherheitstoken und deren Nicht-Wiederverwendbarkeit gemindert werden.- URLs unterliegen Längenbeschränkungen, typischerweise in der Größenordnung von 2.000 Zeichen. Dies kann durch Begrenzung der Anzahl der Claims gemindert werden.
- Der Parameter
return_tokann doppelt URL-codierte Werte enthalten. Solche Anfragen können von Firewalls blockiert werden.
Single-Sign-On-Service
Der Single-Sign-On-Service ist der Endpunkt, zu dem App Builder Benutzer umleitet, wenn eine Authentifizierungsaufforderung ausgegeben wird. Der Single-Sign-On-Service ist verantwortlich für:
- Authentifizierung des Benutzers.
- Generierung eines JWT.
- Umleitung des Benutzers zum Authentifizierungsservice.
Der Single-Sign-On-Service-Endpunkt ist optional.
Konfiguration
Einstellungen
- Name: Name des Sicherheitsanbieters. Der Name kann im Anmeldeformular angezeigt werden.
- Schema: Schema des Sicherheitsanbieters. Das Schema wird in der Authentifizierungsservice-URL angezeigt.
- Typ: JWT SSO
Token
- Audience: Zielgruppe. URI. Wird zur Validierung des JWT-
aud-Anspruchs verwendet. Beispiel:https://example.com/Vinyl. - Issuer: Name des Ausstellers. String, URI empfohlen. Wird zur Validierung des JWT-
iss-Anspruchs verwendet. Groß-/Kleinschreibung beachten.
Endpunkte
| Typ | Beschreibung |
|---|---|
| Single-Sign-On-Service | Ort, zu dem Benutzer umgeleitet werden, wenn eine Authentifizierungsaufforderung an den JWT-SSO-Sicherheitsanbieter ausgegeben wird. Optional, absolute URI. |
Zertifikate
| Verwendung | Typ | Beschreibung |
|---|---|---|
| Signaturvalidierung | X.509-Zertifikat | RSA-Öffentlicher Schlüssel zur Validierung der JWT-Signatur. |
Eigenschaften
Der OAuth-Sicherheitsanbieter unterstützt die folgenden zusätzlichen Parameter:
| Parameter | Standard | Beschreibung |
|---|---|---|
| AllowHttpGet | False | Gibt an, dass der Authentifizierungsendpunkt HTTP-GET-Anfragen zulassen soll. |
| ClockSkew | 5 | Anzahl der Minuten. Positive Ganzzahl. Wird bei der Validierung der JWT-Ansprüche iat, nbf und exp verwendet. |
| MaxLifetime | 5 | Anzahl der Minuten. Positive Ganzzahl. Wird zur Validierung des iat-Anspruchs verwendet. |
| SigningAlgorithm | RS256 | JWT-Signaturalgorithmus. RS256 ist derzeit der einzige unterstützte Algorithmus. |