JWT SSO-Sicherheitsanbieter im Jitterbit App Builder
Der JWT SSO-Sicherheitsanbieter ist eine Implementierung eines benutzerdefinierten Single Sign-On (SSO)-Protokolls. Das Protokoll ermöglicht es einem vertrauenswürdigen Dienst, einen Benutzer in den App Builder einzuloggen. Dies geschieht durch die Generierung eines JSON Web Tokens (JWT) und das Übermitteln des Tokens an einen Authentifizierungsendpunkt durch eine Umleitung des Client-Browsers.
Protokoll
Das JWT SSO-Protokoll nutzt die folgenden Standards:
Endpunkte
Das JWT SSO-Protokoll definiert zwei Dienstendpunkte.
- Authentifizierungsdienst - Gehostet von App Builder.
- Single Sign-On-Dienst - Gehostet von dem vertrauenswürdigen Drittanbieterdienst.
Authentifizierungsdienst
Der Authentifizierungsdienst ist verantwortlich für:
- Authentifizierung eines JWT.
- Anmeldung des Benutzers im App Builder.
Beispiel:
https://example.com/Vinyl/signin-{Provider}
Wo {Provider}
der Name des Sicherheitsanbieters im App Builder ist. Siehe Konfiguration.
Parameter
Der Endpunkt des Authentifizierungsdienstes 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 Kodierung erforderlich.
JWTs müssen die folgenden Anforderungen erfüllen:
- Das JWT muss mit dem RS256-Algorithmus (RSA, SHA-256) signiert sein.
- Das JWT darf nicht verschlüsselt sein.
- Das JWT muss die folgenden registrierten Ansprüche enthalten.
Anspruch | Name | Typ | Zweck |
---|---|---|---|
iss |
Aussteller | StringOrURI | App Builder wird den Aussteller mit dem konfigurierten Aussteller des Sicherheitsanbieters abgleichen und einen Groß-/Kleinschreibung-empfindlichen Vergleich durchführen. |
sub |
Betreff | StringOrURI | App Builder wird den Betreff mit einem Benutzerkonto im App Builder abgleichen. |
aud |
Zielgruppe | URI | App Builder wird die Zielgruppe mit der konfigurierten Zielgruppe des Sicherheitsanbieters abgleichen. Beispiel: https://example.com/Vinyl |
exp |
Ablaufzeit | NumericDate | App Builder wird validieren, dass das Ablaufdatum kleiner als das aktuelle Datum ist, wobei die Uhrzeitabweichung berücksichtigt wird. |
nbf |
Nicht vor | NumericDate | App Builder wird validieren, dass das aktuelle Datum und die Uhrzeit größer sind als der Nicht-vor-Wert, wobei die Uhrzeitabweichung berücksichtigt wird. |
iat |
Ausgestellt am | NumericDate | App Builder wird den Ausgestellt-am-Wert verwenden, um das Alter des JWT zu bestimmen. App Builder wird das Zeitfenster, in dem ein Token akzeptiert wird, auf z. B. 5 Minuten beschränken. |
jti |
JWT-ID | NumericDate | App Builder wird die JWT-ID verwenden, um Wiederholungsangriffe zu verhindern. |
Die registrierten Ansprüche des JWT sind in Abschnitt 4.1 des JSON Web Token-Standards beschrieben.
Das JWT kann zusätzliche Ansprüche enthalten. Wie bei allen Sicherheitsanbietern des App Builders können die Ansprüche:
- Verwendet werden, um Benutzerkonten bereitzustellen und die Mitgliedschaft in Sicherheitsgruppen zu liefern
- Auf Benutzerkontoeigenschaften wie den Benutzernamen, die E-Mail-Adresse oder die Telefonnummer abgebildet werden.
- Von Geschäftsregeln unter Verwendung der mvSQL-Funktion
claim()
zur Laufzeit abgerufen werden.
Beispiel eines JWT-Payloads:
{
"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 Stammverzeichnis der App Builder-Anwendung. Sie muss mit einem führenden Schrägstrich versehen sein.
Beispiel:
/app/Sales/Leads?LeadId=1234
Der App Builder validiert die URI, um sich gegen Open-Redirect-Angriffe abzusichern.
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 so konfiguriert werden, dass er GET
-Anfragen akzeptiert:
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.
Berücksichtigen Sie Folgendes, bevor Sie GET
verwenden:
GET
birgt zusätzliche Risiken, da Abfragezeichenfolgen häufig in Protokolldateien des Webservers geschrieben werden. Dies kann gemildert werden, indem sichergestellt wird, dass Sicherheitstoken eine kurze Lebensdauer haben und nicht wiederverwendet werden können.- URLs unterliegen Längenbeschränkungen, typischerweise in der Nähe von 2.000 Zeichen. Dies kann gemildert werden, indem die Anzahl der Ansprüche begrenzt wird.
- Der Parameter
return_to
kann doppelt URL-codierte Werte enthalten. Solche Anfragen können von Firewalls blockiert werden.
Single Sign-On-Dienst
Der Single Sign-On-Dienst ist der Endpunkt, zu dem der App Builder Benutzer umleitet, wenn eine Herausforderung ausgegeben wird. Der Single Sign-On-Dienst ist verantwortlich für:
- Die Authentifizierung des Benutzers.
- Die Generierung eines JWT.
- Die Umleitung des Benutzers zum Authentifizierungsdienst.
Der Endpunkt des Single Sign-On-Dienstes ist optional.
Konfiguration
Einstellungen
- Name: Name des Sicherheitsanbieters. Der Name erscheint in der Authentifizierungsdienst-URL. Er kann auch im Anmeldeformular angezeigt werden.
- Typ: JWT SSO
Tokens
- Audience: Zielgruppe. URI. Wird verwendet, um den JWT
aud
-Anspruch zu validieren. Beispiel:https://example.com/Vinyl
. - Issuer: Name des Ausstellers. Zeichenfolge, URI empfohlen. Wird verwendet, um den JWT
iss
-Anspruch zu validieren. Groß- und Kleinschreibung beachten.
Endpunkte
Typ | Beschreibung |
---|---|
Single Sign-On-Dienst | Ort, zu dem Benutzer umgeleitet werden, wenn eine Herausforderung an den JWT SSO-Sicherheitsanbieter ausgegeben wird. Optional, absolute URI. |
Zertifikate
Verwendung | Typ | Beschreibung |
---|---|---|
Signaturvalidierung | X.509-Zertifikat | RSA-Öffentlicher Schlüssel, der zur Validierung der JWT-Signatur verwendet wird. |
Eigenschaften
Der OAuth-Sicherheitsanbieter unterstützt die folgenden zusätzlichen Parameter:
Parameter | Standard | Beschreibung |
---|---|---|
AllowHttpGet | False | Gibt an, dass der Authentifizierungspunkt HTTP GET -Anfragen zulassen sollte. |
ClockSkew | 5 | Anzahl der Minuten. Positive ganze Zahl. Wird bei der Validierung der JWT iat , nbf und exp -Ansprüche verwendet. |
MaxLifetime | 5 | Anzahl der Minuten. Positive ganze Zahl. Wird zur Validierung des iat -Anspruchs verwendet. |
SigningAlgorithm | RS256 | Der JWT-Signaturalgorithmus RS256 ist der einzige derzeit unterstützte Algorithmus. |