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 einem vertrauenswürdigen Dienst die Anmeldung eines Benutzers bei App Builder. Dies wird durch die Generierung eines JSON Web Token (JWT) und dessen Weiterleitung an einen Endpoint über eine Client-Browser-Umleitung erreicht.
Protokoll
Das JWT-SSO-Protokoll nutzt die folgenden Standards:
Endpoints
Das JWT SSO-Protokoll definiert zwei Service-Endpoints.
- Authentifizierungsdienst - Gehostet von App Builder.
- Single Sign-On-Dienst - Gehostet vom vertrauenswürdigen Drittpartei.
Authentifizierungsdienst
Der Authentifizierungsdienst ist verantwortlich für:
- Authentifizierung eines JWT.
- Den Benutzer beim App Builder anmelden.
Beispiel:
https://example.com/App Builder/signin-{Provider}
Wobei {Provider}
ist der Name des App Builder Sicherheitsanbieters. Siehe Konfiguration.
Parameter
Der Endpoint des Authentifizierungsdienstes definiert die folgenden Parameter:
jwt
- JSON-Web-Token. Erforderlich.return_to
- Relative URI. Optional.
JWT
Der jwt
Der Parameter 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 werden.
- Das JWT darf nicht verschlüsselt sein.
- Das JWT muss die folgenden registrierten Ansprüche enthalten.
Anspruch | Name | Art | Zweck |
---|---|---|---|
iss | Aussteller | StringOrURI | App Builder gleicht den Aussteller mit dem konfigurierten Aussteller des Sicherheitsanbieters ab und führt dabei einen Vergleich unter Berücksichtigung der Groß- und Kleinschreibung durch. |
sub | Betreff | StringOrURI | App Builder ordnet den Betreff einem App Builder Benutzerkonto zu. |
aud | Zielgruppe | URI | App Builder gleicht die Zielgruppe mit der konfigurierten Zielgruppe des Sicherheitsanbieters ab. Beispiel: https://example.com/App Builder |
exp | Ablaufzeit | NumericDate | App Builder überprüft, ob das Ablaufdatum vor dem aktuellen Datum liegt, und berücksichtigt dabei die Zeitabweichung. |
nbf | Nicht vor | NumericDate | App Builder überprüft, ob das aktuelle Datum und die aktuelle Uhrzeit größer sind als der „Nicht vor“-Wert, und berücksichtigt dabei die Zeitabweichung. |
iat | Ausgestellt am | NumericDate | App Builder verwendet den Wert „Ausgestellt am“, um das Alter des JWT zu bestimmen. App Builder begrenzt das Zeitfenster, in dem ein Token akzeptiert wird, beispielsweise auf 5 Minuten. |
jti | JWT-ID | NumericDate | App Builder verwendet die JWT-ID, um Replay-Angriffe zu verhindern. |
Die registrierten JWT-Ansprüche sind in Abschnitt 4.1 beschrieben des JSON Web Token-Standards.
Das JWT kann zusätzliche Ansprüche enthalten. Wie bei allen App Builder Sicherheitsanbietern können die Ansprüche sein:
- Wird verwendet, um Benutzerkonten bereitzustellen und die Mitgliedschaft in Sicherheitsgruppen zu ermöglichen
- Zugeordnet zu Benutzerkontoeigenschaften wie Benutzername, Email-Adresse oder Telefonnummer.
- Zugriff über Geschäftsregeln mit mvSQL
claim()
Laufzeit.
Beispiel einer JWT Payload:
{
"jti": "918b6e73-400d-479c-baa1-8e12f5fd78f4",
"iss": "example.com",
"aud": "https://example.com/App Builder",
"sub": "Arthurd.Dent",
"iat": 1652473593,
"exp": 1652473893,
"groups": [
"Users",
"Employees",
"Sales"
]
}
Zurück zu
Der return_to
Der Parameter besteht aus einer URI. Die URI ist relativ zum Stammverzeichnis der App Builder Anwendung. Ihr muss ein Schrägstrich vorangestellt sein.
Beispiel:
/app/Sales/Leads?LeadId=1234
App Builder validiert die URI, um vor Open-Redirect-Angriffen zu schützen.
Methoden
Post
Standardmäßig akzeptiert der Endpoint einen Formularbeitrag:
POST /App Builder/signin-JWTSSO HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 31
jwt={jwt}&return_to={return_to}
Erhalten
Alternativ kann der Endpoint auch so konfiguriert werden, dass er akzeptiert GET
Anfragen:
GET /App Builder/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 Abfrage übergeben.
Beachten Sie vor der Verwendung Folgendes GET
:
GET
birgt zusätzliche Risiken, da Abfrage häufig in Webserver-Protokolldateien geschrieben werden. Dies kann durch die Gewährleistung einer kurzen Lebensdauer und der Nichtwiederholbarkeit von Sicherheitstoken verringert werden. URLs unterliegen Längenbeschränkungen, typischerweise im Bereich von 2.000 Zeichen. Dies kann durch die Begrenzung der Anzahl der Ansprüche gemildert werden.- Der
return_to
Parameter können doppelt URL-kodierte Werte enthalten. Solche Anfragen können durch Firewalls blockiert werden.
Single-Sign-On-Dienst
Der Single Sign-On-Dienst ist der Endpoint, zu dem App Builder Benutzer umleitet, wenn eine Abfrage erfolgt. Der Single Sign-On-Dienst ist verantwortlich für:
- Authentifizierung des Benutzers.
- Generieren eines JWT.
- Weiterleitung des Benutzers zum Authentifizierungsdienst.
Der Single Sign-On-Service-Endpoint ist optional.
Konfiguration
Einstellungen
- Name: Name des Sicherheitsanbieters. Der Name erscheint in der URL des Authentifizierungsdienstes. Er kann auch im Anmeldeformular erscheinen.
- Typ: JWT SSO
Token
- Zielgruppe: Zielgruppe. URI. Wird zur Validierung des JWT verwendet
aud
Anspruch. Beispiel:https://example.com/App Builder
. - Aussteller: Name des Ausstellers. String, URI empfohlen. Wird zur Validierung des JWT verwendet.
iss
Anspruch. Groß- und Kleinschreibung beachten.
Endpoints
Typ | Beschreibung |
---|---|
Single Sign-On-Dienst | Ort, zu dem Benutzer weitergeleitet werden, wenn eine Abfrage an den JWT-SSO-Sicherheitsanbieter gesendet wird. Optionaler, absoluter URI. |
Zertifikate
Verwendung | Typ | Beschreibung |
---|---|---|
Signaturvalidierung | X.509-Zertifikat | Öffentlicher RSA-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 Endpoint HTTP zulassen soll GET Anfragen. |
ClockSkew | 5 | Anzahl der Minuten. Positive Ganzzahl. Wird bei der Validierung des JWT verwendet iat , nbf Und exp Ansprüche. |
MaxLifetime | 5 | Anzahl der Minuten. Positive Ganzzahl. Wird zur Validierung der iat Anspruch |
Signaturalgorithmus | RS256 | JWT-Signaturalgorithmus RS256 ist der einzige derzeit unterstützte Algorithmus. |