Zum Inhalt springen

OAuth-Sicherheitsanbieter im Jitterbit App Builder

Der OAuth-Sicherheitsanbieter ermöglicht die Unterstützung für OAuth 2.0. Der Sicherheitsanbieter ist für die Autorisierung von Webdienstanforderungen verantwortlich. Die folgenden Datenquellentypen unterstützen OAuth:

  • AUSRUHEN

  • OData

  • RDBMS (beschränkt auf unterstützte CData-Anbieter)

Darüber hinaus ist es möglich, einen OAuth-Sicherheitsanbieter als externen Authentifizierungsanbieter zu konfigurieren. Weitere Informationen finden Sie weiter unten.

OAuth 2.0-Berechtigungen

Der OAuth-Sicherheitsanbieter unterstützt die folgenden OAuth 2.0-Berechtigungen:

Autorisierungscode

Die OAuth 2.0-Autorisierungscode-Erteilung bietet delegierte Autorisierung auf Benutzerebene. Diese Erteilung ist in RFC 6749 definiert.

Im Autorisierungscode-Flow App Builder leitet den User-Agent (Browser) zum Autorisierungsserver um. Sobald sich der Benutzer erfolgreich angemeldet und die Autorisierungsanfrage genehmigt hat, leitet der Autorisierungsserver den User-Agent zurück zu App Builder. Die Weiterleitung enthält einen Autorisierungscode. App Builder stellt eine Backchannel-Anfrage an den Autorisierungsserver und tauscht den Autorisierungscode gegen ein Zugriffstoken aus. Das Zugriffstoken kann dann verwendet werden, um Anfragen an Webdienste zu autorisieren.

OAuth selbst bietet Autorisierung, nicht Authentifizierung. Daher werden OAuth-Sicherheitsanbieter normalerweise nicht als externe Authentifizierungsanbieter verwendet: Sie werden verwendet, um Anfragen an einen kompatiblen Datenanbieter wie OData oder REST zu autorisieren. Wenn der OAuth-Sicherheitsanbieter jedoch einen Endpoint veröffentlicht, der die Benutzeridentität bereitstellt, kann der OAuth-Sicherheitsanbieter als externer Authentifizierungsanbieter verwendet werden. Weitere Einzelheiten finden Sie unter Benutzerinfo-Endpoint.

Client-Anmeldeinformationen

Die OAuth 2.0-Client-Anmeldeinformationen-Berechtigung bietet eine Authentifizierung auf Clientebene, ähnlich einem Servicekonto. In diesem Ablauf werden die OAuth-Client-Anmeldeinformationen gegen ein OAuth-Zugriffstoken ausgetauscht. Die Client-Anmeldeinformationen-Berechtigung ist in RFC 6749 definiert.

Kennwortanmeldeinformationen des Ressourcenbesitzers

Die OAuth 2.0 Resource Owner Password Credentials-Berechtigung ist in RFC 6749 definiert. Allerdings wurde die Erteilung inzwischen veraltet.

Wichtig

Die Berechtigung „Passwort-Anmeldeinformationen des Ressourcenbesitzers“ DARF NICHT verwendet werden.

Wie ursprünglich konzipiert, bietet die Berechtigung „Passwort-Anmeldeinformationen des Ressourcenbesitzers“ von OAuth 2.0 Autorisierung auf Benutzerebene. Der Benutzer gibt seinen Benutzernamen und sein Passwort an einen vertrauenswürdigen Client weiter. Der vertrauenswürdige Client tauscht die Anmeldeinformationen gegen ein Zugriffstoken aus.

App Builder bietet teilweise Unterstützung für die Gewährung von Kennwortanmeldeinformationen für OAuth 2.0-Ressourcenbesitzer. App Builder fordert den Benutzer nicht zur Eingabe seiner Anmeldeinformationen auf. Stattdessen werden alle Benutzer mit einer einzigen Anmeldeinformation autorisiert. Auf diese Weise ist die Berechtigung funktional gleichwertig mit einem Dienstkonto.

SAML 2.0-Träger-Assertion

Der OAuth 2.0 SAML 2.0 Bearer Assertion Grant ermöglicht eine Datenquellenauthentifizierung auf Benutzerebene. In diesem Ablauf werden SAML Assertionen gegen OAuth-Zugriffstoken ausgetauscht. Der OAuth 2.0 SAML 2.0 Bearer Assertion Grant ist in RFC 7522 definiert.

JWT-Trägertoken

Die OAuth 2.0 JWT Bearer Token-Zuteilung ermöglicht eine Datenquellenauthentifizierung auf Benutzerebene. In diesem Ablauf werden JSON Web Tokens (JWTs) gegen OAuth-Zugriffstoken ausgetauscht. Die OAuth 2.0 JWT Bearer Token-Zuteilung ist in RFC 7523 definiert.

Konfiguration

Die Konfiguration variiert je nach OAuth-Berechtigung. OAuth erfordert mindestens:

  • Client-ID (client_id) und Client-Geheimnis (client secret).

  • Token Endpoint.

Für einzelne OAuth-Berechtigungen sind zusätzliche Konfigurationen erforderlich, wie unten angegeben.

Authentifizierung

Die Authentifizierungseigenschaften bestimmen die OAuth-Berechtigung und die Authentifizierungsschemata.

  • Authentifizierungstyp: OAuth

  • OAuth-Berechtigung: Wählen Sie eine unterstützte OAuth-Berechtigung aus.

  • OAuth-Clientauthentifizierung: Bestimmt das OAuth 2.0-Clientauthentifizierungsschema RFC 6749 Abschnitt 2.3. Zu den Optionen gehören:

    • Keine: Gibt an, dass der Client nicht authentifiziert werden soll. (none.)

    • Basic: Gibt an, dass das Client-Passwortschema verwendet wird. Die Anmeldeinformationen werden mithilfe der HTTP-Basic-Authentifizierung bereitgestellt. (client_secret_basic.)

    • Post: Gibt an, dass das Client-Passwortschema verwendet wird. Die Anmeldeinformationen werden als Formularparameter im Anforderungstext bereitgestellt. (client_secret_post.)

  • OAuth-Ressourcenauthentifizierung: Bestimmt das Authentifizierungsschema für Ressourcenanforderungen. Zu den Optionen gehören:

    • Bearer: Träger-Authentifizierungsschema. Standard.

    • Formular: Zugriffstoken an den URL-codierten Formulartext anhängen.

    • Abfrage: Zugriffstoken an Abfrage anhängen.

  • Token-Eigentümer: Legt fest, ob Token an einzelne Benutzer oder an das Clientsystem ausgegeben werden. Zu den Optionen gehören:

    • Benutzer: Token werden an einzelne Benutzer ausgegeben.

    • Client: Token werden an das Clientsystem ausgegeben.

  • Token löschen beim Abmelden: Wenn aktiviert, App Builder löscht das gespeicherte Token, wenn sich der Benutzer abmeldet. Standard: Deaktiviert.

Zeichen

Die folgenden Berechtigungen generieren Token, die gegen OAuth-Zugriffstoken ausgetauscht werden:

  • SAML 2.0-Bearer-Assertion.

  • JWT-Trägertoken.

SAML 2.0-Träger-Assertion

  • Aussteller: Der Herausgeber der SAML -Assertion.

  • Zielgruppe: Die Zielgruppenbeschränkung der SAML -Assertion. Obwohl die SAML -Spezifikation angibt, dass die Zielgruppe eine URI ist, beachten viele Implementierungen dies nicht. Folglich App Builder erfordert nicht, dass das Publikum eine URI ist.

  • Empfänger: Die URI des Empfängers der SAML -Assertion (z. B. http://example.com/service).

JWT-Trägertoken

Endpoints

Typ Zuschüsse Beschreibung
Authorization Endpoint Autorisierungscode OAuth 2.0- Endpoint URL. RFC 6749
Token Endpoint Alle OAuth 2.0-Token-Endpoint URL. RFC 6749
User Info Endpoint Autorisierungscode Endpoint, der die Benutzeridentität bereitstellt. Erforderlich, wenn OAuth als externer Authentifizierungsanbieter behandelt wird. Nicht Teil des OAuth-Standards. Der Endpoint muss eine JSON-Antwort zurückgeben, die die Benutzeridentität enthält.

Qualifikationen

Typ Zuschüsse Beschreibung
Client Alle OAuth 2.0-Clientkennung (client_id) und geheim (client_secret). RFC 6749
Resource Owner Kennwortanmeldeinformationen des Ressourcenbesitzers Benutzername des OAuth 2.0-Ressourcenbesitzers (username) und Passwort (password). RFC 6749

Zertifikate

Typ Zuschüsse Beschreibung
Signing SAML 2.0 Bearer Assertion Die SAML 2.0 Bearer Assertion-Bewilligung erfordert ein X.509-Zertifikat mit privatem Schlüssel in einem kennwortgeschützten PKCS#12-Container (.pfx).
JWT Bearer Token Für die Gewährung des JWT Bearer Tokens ist ein PEM-kodierter, privater PKCS#1 RSA-Schlüssel erforderlich (RSA PRIVATE KEY).

Eigenschaften

Der OAuth-Sicherheitsanbieter unterstützt die folgenden zusätzlichen Parameter:

Parameter Standard
BearerSchemeIdentifier Bearer Authorization Schema bei Verwendung der Bearer Ressourcenauthentifizierung.
ExpiresIn Ablauf des Zugriffstokens in Sekunden. Kann verwendet werden, wenn der Endpoint kein Ablaufdatum angibt und der Ressourcenserver kein 401 Unauthorized Antwort, wenn der Zugriffstoken abgelaufen ist.
IgnoreTlsErrors False Gibt an, ob App Builder sollte TLS-Fehler ignorieren, wenn Backchannel-Anfragen an den Token Endpoint gestellt werden. Dies sollte nur für Entwicklung und Tests verwendet werden.
Scopes Durch Leerzeichen getrennte Liste der OAuth 2.0-Zugriffstokenbereiche. RFC 6749
SingleUseAccessToken False Gibt an, ob der Zugriffstoken nur einmal verwendet werden kann.
Token Endpoint Parameters Parameter, die an den OAuth-Token Endpoint übergeben werden. Standardmäßig App Builder generiert die entsprechenden Parameter basierend auf dem OAuth-Flow. Verwenden Sie diese Einstellung nur für nicht konforme oder anderweitig nicht unterstützte OAuth-APIs. Die Parameter sollten im Formular URL codierten Format angegeben werden (application/x-www-form-urlencoded). Wenn die Parameterliste mit einem Et-Zeichen (&), werden die Parameter in die generierten Parameter integriert. Wenn ein Parameter den gleichen Namen wie ein generierter Parameter hat, wird der generierte Parameter überschrieben. Wenn ein angegebener Parameter keinen Wert hat, z. B. &grant_type&username=user&password=password, wird der generierte Parameter entfernt. Andernfalls wird der angegebene Parameter an die generierten Parameter angehängt. Die Parameterliste unterstützt String-Interpolation. Ausdrücke können auf dynamische Parameter verweisen, z. B. username={{ client_id }}&password={{ Clientgeheimnis }}. Dies ist bei der Integration mit APIs von Drittpartei nützlich, die keine Standardparameternamen verwenden.
RefreshRequiresScopes False Gibt an, ob die Bereiche (scope) sollte im Anforderungstext enthalten sein, der beim Aktualisieren des Zugriffstokens an den Token-Endpoint gesendet wird.

Autorisierungscode

Die folgenden zusätzlichen Eigenschaften gelten für die Gewährung des Autorisierungscodes.

Parameter Standard
BackchannelAuthorization False Gibt an, ob ein Autorisierungscode über eine Backchannel-Anforderung (Server-zu-Server) abgerufen werden kann. Dies ist eine nicht standardmäßige Erweiterung der Autorisierungscode-Zuweisung.

SAML 2.0-Träger-Assertion

Die folgenden zusätzlichen Eigenschaften gelten für den SAML 2.0 Bearer Assertion-Grant.

Parameter
SamlSingleSignOnProvider Name von an App Builder SAML Sicherheitsanbieter. Dieser Parameter gilt nur für die SAML 2.0 Bearer Assertion-Zuweisung.

JWT-Trägertoken

Die folgenden zusätzlichen Eigenschaften gelten für die JWT Bearer Token-Zuteilung.

Parameter Standard
JwtClaimSet { "scope": "{{ Geltungsbereich }}" } Autorisierungsserver können benutzerdefinierte Ansprüche erfordern. Beispielsweise erfordert Google eine scope Anspruch, der mit dem OAuth übereinstimmt scope Parameter. Der JwtClaimSet Mit diesem Parameter können Administratoren zusätzliche Ansprüche angeben. Der Wert hat die Form einer JSON-Vorlage. Die folgenden Werte können in die Vorlage eingesetzt werden:
  • client_id- OAuth
  • client_id Parameter.
  • client_secret- OAuth client_secret Parameter.
  • scope- OAuth scope Parameter.
  • sub- JWT sub Anspruch.
  • iss- JWT iss Anspruch.
  • aud- JWT aud Anspruch.
SigningAlgorithm RS256 JWT-Algorithmusparameter wie in RFC 7518 definiert. Der einzige unterstützte Algorithmus ist RS256.

Ausruhen

Die folgenden zusätzlichen Eigenschaften gelten, wenn der OAuth-Sicherheitsanbieter zum Authentifizieren von REST-Datenquellen verwendet wird. Diese werden für OAuth-Endpoints und andere Datenquellentypen, einschließlich OData und RDBMS, ignoriert.
Anforderungsheader müssen durch einen Wagenrücklauf getrennt sein (in einer eigenen Zeile erscheinen).

Parameter Standard Beispiel
RequestHeaders X-Custom-Header: Value X-Another-Header: Value Benutzerdefinierte HTTP-Header, die an REST- Endpoint angehängt werden. Die Header müssen gemäß RFC 7230 formatiert sein. Zeilenumbruch wird nicht unterstützt.

Protokollunterstützung

Aktualisierungstoken

Wenn die Zugriffstokenanforderung ein Aktualisierungstoken enthält, App Builder versucht automatisch, mit dem Aktualisierungstoken ein neues Zugriffstoken zu erhalten, nachdem ein 401 Unauthorized Antwort.

Autorisierungscode

Autorisierungsanfrage

Beim Erstellen einer Autorisierungsanfrage App Builder enthält die Clientkennung (client_id), geheimer Clientschlüssel (client_secret) und Bereiche (scope). Zusätzlich, App Builder fügt automatisch die folgenden Standardparameter an:

  • redirect_uri: App Builder konstruiert die redirect_uri Parameter aus der aktuellen URL. Er hat die Form https://example.com/AppBuilder/signin-OAuth, wobei OAuth der Name des OAuth-Sicherheitsanbieters ist.

  • state: Der Statusparameter ist eine verschlüsselte, undurchsichtige Payload. Er enthält ein Cross-Site Request Forgery (CSRF)-Token gemäß RFC 6749.

Endpoint

Wie in RFC 6749 definiert, stellt die Autorisierungscode-Zuweisung einen Endpoint bereit. Dieser Endpoint wartet auf Autorisierungsantworten an der Adresse:

  • https://example.com/AppBuilder/signin-OAuth

Wo https://example.com/AppBuilder ist die absolute URL zur App Builder Stammverzeichnis der Anwendung und OAuth ist der URL-codierte, Groß-/Kleinschreibung beachtende Name des Sicherheitsanbieters.

Die meisten Anwendungen von Drittpartei müssen mit dem Endpoint konfiguriert werden, bevor Anfragen autorisiert werden können.

Verwenden von OAuth zur externen Authentifizierung

Wie oben erwähnt, ist OAuth ein Autorisierungsprotokoll und kein Authentifizierungsprotokoll. Einige Anbieterimplementierungen erweitern das OAuth-Protokoll jedoch um die Authentifizierung. Normalerweise geschieht dies durch die Veröffentlichung eines Endpoint, der den Benutzer identifiziert. App Builder bezeichnet einen solchen Endpoint als User Info Endpoint.

App Builder kann so konfiguriert werden, dass der Benutzerinfo-Endpoint Abfrage wird, um die Identität des Benutzers abzurufen. Dadurch kann ein OAuth-Sicherheitsanbieter für die externe Authentifizierung verwendet werden. Beachten Sie jedoch, dass der Endpoint die folgenden Anforderungen erfüllen muss:

  • Der Endpoint muss erreichbar sein durch App Builder.

  • Der Endpoint muss auf ein HTTP antworten GET Anfrage, die keinen Anfragetext enthält.

  • Der Endpoint muss die OAuth Basic-Client-Authentifizierung akzeptieren (wie oben beschrieben).

  • Die HTTP-Antwort muss eine 200 Statuscode.

  • Die HTTP-Antwort muss einen Text mit einem Content-Type von application/json.

  • Das JSON-Dokument muss eine Eigenschaft der obersten Ebene enthalten, die den Benutzer identifiziert.

Nach dem Erhalt des Zugriffstokens App Builder sendet eine clientauthentifizierte Anfrage an den User Info Endpoint. App Builder analysiert den Antworttext als JSON und behandelt Eigenschaften der obersten Ebene als Ansprüche.

Nehmen wir beispielsweise die folgende Beispielantwort:

HTTP/1.1 200 OK
Content-Type: application/json

{
    "user_name": "arthur.dent",
    "name": "Arthur Dent",
    "email": "arthurdent@example.com"
}

Folgende Anspruchsarten werden verfügbar sein:

  • user_name

  • name

  • email

Zusätzlich zur Angabe des User Info Endpoint muss der Entwickler den Anspruch zuordnen, der den Benutzer identifiziert - in diesem Fall den user_name Anspruch - auf den Anspruchsnutzungstyp Name.

SAML 2.0-Träger-Assertion

Bei Verwendung des SAML 2.0 Bearer Assertion-Flows können SAML Assertionen auf zwei Arten bezogen werden:

  1. App Builder generiert und signiert die SAML Assertionen auf Anfrage. In diesem Fall App Builder fungiert als IdP.

  2. (Veraltet) Ein Identitätsanbieter eines Drittpartei (IdP) stellt während des SAML Single-Sign-On-Prozesses (SSO) eine SAML -Assertion aus. Weitere Informationen finden Sie unter SAML -Anbietertyp für weitere Informationen.

Jede Quelle erfordert eine zusätzliche Konfiguration.

Generieren Sie SAML Assertionen bei Bedarf

Um bei Bedarf eine SAML -Assertion zu generieren, konfigurieren Sie die Token-Eigenschaften wie oben beschrieben. Darüber hinaus erfordert die Gewährung der SAML 2.0 Bearer Assertion ein Signatur-Zertifikat mit einem privaten Schlüssel.

SAML Quellenbehauptungen von einem IdP

Um SAML Assertionen von einem Drittpartei IdP zu beziehen, legen Sie den Parameter SamlSingleSignOnProvider fest.