Zum Inhalt springen

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:

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

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