Zum Inhalt springen

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:

  1. Authentifizierung eines JWT.
  2. 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:

  • GET birgt 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_to kann 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:

  1. Authentifizierung des Benutzers.
  2. Generierung eines JWT.
  3. 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.