OAuth 2-Autorisierung
Destination SDK unterstützt verschiedene Autorisierungsmethoden für Ihr Ziel. Dazu gehört die Option, sich mithilfe des OAuth 2Autorisierungs-Frameworks bei Ihrem Ziel zu .
Auf dieser Seite werden die verschiedenen von Destination SDK unterstützten OAuth 2-Autorisierungsflüsse beschrieben und Anweisungen zum Einrichten der OAuth 2-Autorisierung für Ihr Ziel bereitgestellt.
Unterstützte Integrationstypen supported-integration-types
Die nachstehende Tabelle beschreibt ausführlich, welche Integrationstypen die auf dieser Seite beschriebenen Funktionen unterstützen.
Hinzufügen von OAuth 2-Autorisierungsdetails zu Ihrer Zielkonfiguration how-to-setup
Voraussetzungen in Ihrem System prerequisites
Als ersten Schritt müssen Sie in Ihrem System eine Anwendung für Adobe Experience Platform erstellen oder anderweitig Experience Platform in Ihrem System registrieren. Das Ziel besteht darin, eine Client-ID und ein Client-Geheimnis zu generieren, die zum Authentifizieren des Experience Platform bei Ihrem Ziel erforderlich sind.
Als Teil dieser Konfiguration in Ihrem System benötigen Sie die Adobe Experience Platform OAuth 2-Umleitungs-/Callback-URLs, die Sie in der folgenden Liste finden.
https://platform-va7.adobe.io/data/core/activation/oauth/api/v1/callbackhttps://platform-nld2.adobe.io/data/core/activation/oauth/api/v1/callbackhttps://platform-aus5.adobe.io/data/core/activation/oauth/api/v1/callbackhttps://platform-can2.adobe.io/data/core/activation/oauth/api/v1/callbackhttps://platform-gbr9.adobe.io/data/core/activation/oauth/api/v1/callbackhttps://platform.adobe.io/data/core/activation/oauth/api/v1/callback
Am Ende dieses Schritts sollten Sie über Folgendes verfügen:
- eine Client-ID;
- ein Client-Geheimnis;
- die Callback-URL von Adobe (für die Gewährung des Autorisierungs-Codes).
Was Sie in Destination SDK tun müssen to-do-in-destination-sdk
Um die OAuth 2-Autorisierung für Ihr Ziel in Experience Platform einzurichten, müssen Sie Ihre OAuth 2-Details unter dem customerAuthenticationConfigurations-Parameter zur Zielkonfiguration hinzufügen. Siehe Kundenauthentifizierung für ausführliche Beispiele. Spezifische Anweisungen dazu, welche Felder Sie je nach Gewährungstyp der OAuth 2-Autorisierung zu Ihrer Konfigurationsvorlage hinzufügen müssen, finden Sie weiter unten auf dieser Seite.
Unterstützte OAuth 2-Gewährungstypen oauth2-grant-types
Experience Platform unterstützt die drei OAuth 2-Gewährungstypen in der folgenden Tabelle. Wenn Sie ein benutzerdefiniertes OAuth 2-Setup haben, kann Adobe es mithilfe von benutzerdefinierten Feldern in Ihrer Integration unterstützen. Weitere Informationen finden Sie in den Abschnitten zu den einzelnen Fördertypen.
- Sie geben die Eingabeparameter wie in den folgenden Abschnitten beschrieben an. Adobe-interne Systeme stellen eine Verbindung zum Autorisierungssystem Ihrer Plattform her und erfassen Ausgabeparameter, mit denen die Benutzerin bzw. der Benutzer authentifiziert und die Autorisierung für Ihr Ziel verwaltet wird.
- Die in der Tabelle fett hervorgehobenen Eingabeparameter sind erforderliche Parameter im OAuth 2-Autorisierungsfluss. Die anderen Parameter sind optional. Es gibt weitere benutzerdefinierte Eingabeparameter, die hier nicht gezeigt werden, aber in den Abschnitten Anpassen der OAuth 2-Konfiguration und Aktualisierung des Zugriffstokens ausführlich beschrieben werden.
- clientId
- clientSecret
- Scope (Umfang)
- authorizationUrl
- accessTokenUrl
- refreshTokenUrl
- accessToken
- expiresIn
- refreshToken
- tokenType
- clientId
- clientSecret
- Scope (Umfang)
- accessTokenUrl
- username
- password
- accessToken
- expiresIn
- refreshToken
- tokenType
- clientId
- clientSecret
- Scope (Umfang)
- accessTokenUrl
- accessToken
- expiresIn
- refreshToken
- tokenType
In der obigen Tabelle sind die Felder aufgeführt, die in standardmäßigen OAuth 2-Flüssen verwendet werden. Zusätzlich zu diesen Standardfeldern können verschiedene Partnerintegrationen zusätzliche Eingaben und Ausgaben erfordern. Adobe hat ein flexibles OAuth 2-Autorisierungs-Framework für die Destination SDK entwickelt, das Varianten des oben genannten Standardfeldmusters handhaben kann und gleichzeitig einen Mechanismus zur automatischen Neuerstellung ungültiger Ausgaben unterstützt, z. B. abgelaufene Zugriffstoken.
Die Ausgabe enthält in allen Fällen ein Zugriffstoken, das von Experience Platform verwendet wird, um sich zu authentifizieren und die Autorisierung für Ihr Ziel zu bewahren.
Das System, das von Adobe für die OAuth 2-Autorisierung entwickelt wurde:
- Unterstützt alle drei OAuth 2-Gewährungstypen und berücksichtigt dabei alle Variationen in ihnen, z. B. zusätzliche Datenfelder, nicht standardmäßige API-Aufrufe und mehr.
- Unterstützt Zugriffstoken mit variierenden Lebenszeitwerten (90 Tage, 30 Minuten oder ein beliebiger anderer von Ihnen angegebener Lebenszeitwert).
- Unterstützt OAuth 2-Autorisierungsflüsse mit oder ohne Aktualisierungs-Token.
OAuth 2 mit Autorisierungs-Code authorization-code
Wenn Ihr Ziel einen standardmäßigen OAuth 2.0-Autorisierungs-Code-Fluss (lesen Sie dazu den Abschnitt RFC-Standardspezifikationen) oder eine Variante davon unterstützt, finden Sie unten die erforderlichen und die optionalen Felder:
- clientId
- clientSecret
- Scope (Umfang)
- authorizationUrl
- accessTokenUrl
- refreshTokenUrl
- accessToken
- expiresIn
- refreshToken
- tokenType
Um diese Autorisierungsmethode für Ihr Ziel einzurichten, fügen Sie Ihrer Konfiguration die folgenden Zeilen hinzu, wenn Sie eine Zielkonfiguration erstellen:
{
//...
"customerAuthenticationConfigurations": [
{
"authType": "OAUTH2",
"grant": "OAUTH2_AUTHORIZATION_CODE",
"accessTokenUrl": "https://api.moviestar.com/OAuth/access_token",
"authorizationUrl": "https://www.moviestar.com/dialog/OAuth",
"refreshTokenUrl": "https://api.moviestar.com/OAuth/refresh_token",
"clientId": "Experience-Platform-client-id",
"clientSecret": "Experience-Platform-client-secret",
"scope": ["read", "write"]
}
]
//...
}
authTypegrantaccessTokenUrlauthorizationUrlrefreshTokenUrlrefreshTokenUrl identisch mit der accessTokenUrl.clientIdclientSecretscopeOAUth 2 mit Passwortgewährung
Für die OAuth 2-Passwortgewährung (lesen Sie die RFC-Standardspezifikationen) erfordert Experience Platform den Benutzernamen und das Passwort der Benutzerin bzw. des Benutzers. Im Autorisierungsfluss tauscht Experience Platform diese Anmeldeinformationen gegen ein Zugriffs-Token und optional ein Aktualisierungs-Token aus.
Adobe verwendet die folgenden Standardeingaben, um die Zielkonfiguration zu vereinfachen und Werte zu überschreiben:
- clientId
- clientSecret
- Scope (Umfang)
- accessTokenUrl
- username
- password
- accessToken
- expiresIn
- refreshToken
- tokenType
username und password hinzufügen. Wenn Sie "grant": "OAUTH2_PASSWORD" in der Zielkonfiguration hinzufügen, fordert das System die Benutzenden auf, in der Experience Platform-Benutzeroberfläche einen Benutzernamen und ein Passwort anzugeben, wenn sie sich bei Ihrem Ziel authentifizieren.Um diese Autorisierungsmethode für Ihr Ziel einzurichten, fügen Sie Ihrer Konfiguration die folgenden Zeilen hinzu, wenn Sie eine Zielkonfiguration erstellen:
{
//...
"customerAuthenticationConfigurations": [
{
"authType": "OAUTH2",
"grant": "OAUTH2_PASSWORD",
"accessTokenUrl": "https://api.moviestar.com/OAuth/access_token",
"clientId": "Experience-Platform-client-id",
"clientSecret": "Experience-Platform-client-secret",
"scope": ["read", "write"]
}
]
authTypegrantaccessTokenUrlclientIdclientSecretscopeOAuth 2 mit Gewährung von Client-Anmeldedaten
Sie können ein Ziel für OAuth 2 Client-Anmeldedaten konfigurieren (lesen Sie den Abschnitt RFC-Standardspezifikationen) konfigurieren, das die unten aufgeführten Standardeingaben und -ausgaben unterstützt. Sie können die Werte anpassen. Siehe Anpassen der OAuth 2-Konfiguration für Details.
- clientId
- clientSecret
- Scope (Umfang)
- accessTokenUrl
- accessToken
- expiresIn
- refreshToken
- tokenType
Um diese Autorisierungsmethode für Ihr Ziel einzurichten, fügen Sie Ihrer Konfiguration die folgenden Zeilen hinzu, wenn Sie eine Zielkonfiguration erstellen:
{
//...
"customerAuthenticationConfigurations": [
{
"authType": "OAUTH2",
"grant": "OAUTH2_CLIENT_CREDENTIALS",
"accessTokenUrl": "https://api.moviestar.com/OAuth/access_token",
"refreshTokenUrl": "https://api.moviestar.com/OAuth/refresh_token",
"clientId": "Experience-Platform-client-id",
"clientSecret": "Experience-Platform-client-secret",
"scope": ["read", "write"]
}
]
//...
}
authTypegrantaccessTokenUrlrefreshTokenUrlrefreshTokenUrl identisch mit der accessTokenUrl.clientIdclientSecretscopeAnpassen der OAuth 2-Konfiguration customize-configuration
Die in den obigen Abschnitten beschriebenen Konfigurationen beschreiben standardmäßige OAuth 2-Gewährungen. Das von Adobe entworfene System bietet jedoch eine Flexibilität, sodass Sie für alle Variationen der OAuth 2-Gewährungen auch benutzerdefinierte Parameter verwenden können. Um die standardmäßigen OAuth 2-Einstellungen anzupassen, verwenden Sie die Parameter authenticationDataFields, wie in den Beispielen unten dargestellt.
Beispiel 1: Verwenden von authenticationDataFields zur Erfassung von Informationen aus der Autorisierungsantwort example-1
In diesem Beispiel verfügt eine Zielplattform über Aktualisierungstoken, die nach einer bestimmten Zeitdauer ablaufen. In diesem Fall richtet der Partner das benutzerdefinierte Feld refreshTokenExpiration ein, um das Ablaufdatum des Aktualisierungstokens aus dem Feld refresh_token_expires_in in der API-Antwort abzurufen.
{
"customerAuthenticationConfigurations":[
{
"authType":"OAUTH2",
"options":{
},
"grant":"OAUTH2_AUTHORIZATION_CODE",
"accessTokenUrl":"https://api.moviestar.com/OAuth/access_token",
"authorizationUrl":"https://api.moviestar.com/OAuth/authorization",
"scope":[
"read",
"write",
"delete"
],
"refreshTokenUrl":"https://api.moviestar.com/OAuth/accessToken",
"clientSecret":"client-secret-here",
"authenticationDataFields":[
{
"name":"refreshTokenExpiration",
"title":"Refresh Token Expires In",
"description":"Time in seconds when the refresh token will expire",
"type":"string",
"isRequired":false,
"source":"CUSTOMER",
"authenticationResponsePath":"refresh_token_expires_in"
}
]
}
]
}
Beispiel 2: Verwenden von authenticationDataFields, um ein spezielles Aktualisierungstoken bereitzustellen example-2
In diesem Beispiel richtet ein Partner sein Ziel ein, um ein spezielles Aktualisierungstoken bereitzustellen. Außerdem wird das Ablaufdatum für Zugriffstoken nicht in der API-Antwort zurückgegeben, sodass er einen Standardwert (in diesem Fall 3600 Sekunden) hartcodieren kann.
"authenticationDataFields": [
{
"name": "refreshToken",
"value": "special_refresh_token"
},
{
"name": "expiresIn",
"value": 3600
}
]
Beispiel 3: Die Benutzenden geben die Client-ID und das Client-Geheimnis ein, wenn sie das Ziel konfigurieren example-3
In diesem Beispiel muss die Kundin oder der Kunde nicht (wie im Abschnitt Voraussetzungen in Ihrem System gezeigt) eine globale Kunden-ID und ein Kundengeheimnis erstellen, sondern die Kunden-ID, das Kundengeheimnis und die Konto-ID (die ID, die die Kundin bzw. der Kunde für die Anmeldung beim Ziel verwendet) eingeben
{
//...
"customerAuthenticationConfigurations": [
{
"authType": "OAUTH2",
"grant": "OAUTH2_CLIENT_CREDENTIALS",
"authenticationDataFields": [
{
"name": "clientId",
"title": "Client ID",
"description": "Client ID",
"type": "string",
"isRequired": true,
"source": "CUSTOMER"
},
{
"name": "clientSecret",
"title": "Client Secret",
"description": "Client Secret",
"type": "string",
"isRequired": true,
"format": "password",
"source": "CUSTOMER"
},
{
"name": "moviestarId",
"title": "Moviestar ID",
"description": "Moviestar ID",
"type": "string",
"isRequired": true,
"source": "CUSTOMER"
}
],
"accessTokenRequest": {
"destinationServerType": "URL_BASED",
"urlBasedDestination": {
"url": {
"templatingStrategy": "PEBBLE_V1",
"value": "https://{{ authData.moviestarId }}.yourdestination.com/identity/oauth/token"
}
},
"httpTemplate": {
"requestBody": {
"templatingStrategy": "PEBBLE_V1",
"value": "{{ formUrlEncode('grant_type', 'client_credentials', 'client_id', authData.clientId, 'client_secret', authData.clientSecret) | raw }}"
},
"httpMethod": "POST",
"contentType": "application/x-www-form-urlencoded"
},
"responseFields": [
{
"templatingStrategy": "PEBBLE_V1",
"value": "{{ response.body.access_token }}",
"name": "accessToken"
},
{
"templatingStrategy": "PEBBLE_V1",
"value": "{{ response.body.scope }}",
"name": "scope"
},
{
"templatingStrategy": "PEBBLE_V1",
"value": "{{ response.body.token_type }}",
"name": "tokenType"
},
{
"templatingStrategy": "PEBBLE_V1",
"value": "{{ response.body.expires_in }}",
"name": "expiresIn"
}
]
}
}
]
//...
}
Sie können die folgenden Parameter in authenticationDataFields zum Anpassen Ihrer OAuth 2-Konfiguration verwenden:
authenticationDataFields.nameauthenticationDataFields.titleauthenticationDataFields.descriptionauthenticationDataFields.typeAkzeptierte Werte:
string, boolean, integerauthenticationDataFields.isRequiredauthenticationDataFields.format"format":"password" auswählen, verschlüsselt Adobe den Wert des Autorisierungsdatenfelds. Bei Verwendung mit "fieldType": "CUSTOMER" ist außerdem die Eingabe in der Benutzeroberfläche unsichtbar, wenn Benutzende etwas in das Feld eingeben.authenticationDataFields.fieldTypeauthenticationDataFields.valueauthenticationDataFields.type.authenticationDataFields.authenticationResponsePathAktualisierung des Zugriffstokens access-token-refresh
Adobe hat ein System entwickelt, das abgelaufene Zugriffstoken aktualisiert, ohne dass die Benutzenden sich wieder bei Ihrer Plattform anmelden müssen. Das System kann ein neues Token generieren, sodass die Aktivierung an Ihr Ziel nahtlos für die Kundinnen und Kunden fortgesetzt wird.
Um die Aktualisierung des Zugriffstokens einzurichten, müssen Sie möglicherweise eine vorlagenbasierte HTTP-Anfrage konfigurieren, die es Adobe ermöglicht, mithilfe eines Aktualisierungstokens ein neues Zugriffstoken zu erhalten. Wenn das Zugriffstoken abgelaufen ist, verwendet Adobe die von Ihnen bereitgestellte vorlagenbasierte Anfrage und fügt die von Ihnen angegebenen Parameter hinzu. Verwenden Sie den Parameter accessTokenRequest zum Konfigurieren eines Aktualisierungsmechanismus für Zugriffstoken.
{
"customerAuthenticationConfigurations":[
{
"authType":"OAUTH2",
"grant":"OAUTH2_CLIENT_CREDENTIALS",
"accessTokenRequest":{
"destinationServerType":"URL_BASED",
"urlBasedDestination":{
"url":{
"templatingStrategy":"PEBBLE_V1",
"value":"https://{{authData.customerId}}.yourdestination.com/identity/oauth/token"
}
},
"httpTemplate":{
"requestBody":{
"templatingStrategy":"PEBBLE_V1",
"value":"{{ formUrlEncode('grant_type', 'client_credentials', 'client_id', authData.clientId, 'client_secret', authData.clientSecret) | raw }}"
},
"httpMethod":"POST",
"contentType":"application/x-www-form-urlencoded",
"headers":[
]
},
"responseFields":[
{
"templatingStrategy":"PEBBLE_V1",
"value":"{{ response.body.expires_in }}",
"name":"expiresIn"
},
{
"templatingStrategy":"PEBBLE_V1",
"value":"{{ response.body.access_token }}",
"name":"accessToken"
}
],
"validations":[
{
"name":"access_token validation",
"actualValue":{
"templatingStrategy":"PEBBLE_V1",
"value":"{{response.body.access_token is empty }}"
},
"expectedValue":{
"templatingStrategy":"PEBBLE_V1",
"value":"false"
}
},
{
"name":"response status",
"actualValue":{
"templatingStrategy":"PEBBLE_V1",
"value":"{{ response.status }}"
},
"expectedValue":{
"templatingStrategy":"PEBBLE_V1",
"value":"200"
}
}
]
}
}
]
}
Sie können die folgenden Parameter in accessTokenRequest verwenden, um Ihren Token-Aktualisierungsprozess anzupassen:
accessTokenRequest.destinationServerTypeURL_BASED.accessTokenRequest.urlBasedDestination.url.templatingStrategy- Verwenden Sie
PEBBLE_V1, wenn Sie Vorlagen für den Wert inaccessTokenRequest.urlBasedDestination.url.valueverwenden. - Verwenden Sie
NONE, wenn der Wert im FeldaccessTokenRequest.urlBasedDestination.url.valueeine Konstante ist.
accessTokenRequest.urlBasedDestination.url.valueaccessTokenRequest.httpTemplate.requestBody.templatingStrategy- Verwenden Sie
PEBBLE_V1, wenn Sie Vorlagen für die Werte inaccessTokenRequest.httpTemplate.requestBody.valueverwenden. - Verwenden Sie
NONE, wenn der Wert im FeldaccessTokenRequest.httpTemplate.requestBody.valueeine Konstante ist.
accessTokenRequest.httpTemplate.requestBody.valueaccessTokenRequest.httpTemplate.httpMethodPOST.accessTokenRequest.httpTemplate.contentTypeBeispielsweise
application/x-www-form-urlencoded oder application/json.accessTokenRequest.httpTemplate.headersaccessTokenRequest.responseFields.templatingStrategy- Verwenden Sie
PEBBLE_V1, wenn Sie Vorlagen für die Werte inaccessTokenRequest.responseFields.valueverwenden. - Verwenden Sie
NONE, wenn der Wert im FeldaccessTokenRequest.responseFields.valueeine Konstante ist.
accessTokenRequest.responseFields.valueaccessTokenRequest.validations.nameaccessTokenRequest.validations.actualValue.templatingStrategy- Verwenden Sie
PEBBLE_V1, wenn Sie Vorlagen für die Werte inaccessTokenRequest.validations.actualValue.valueverwenden. - Verwenden Sie
NONE, wenn der Wert im FeldaccessTokenRequest.validations.actualValue.valueeine Konstante ist.
accessTokenRequest.validations.actualValue.valueaccessTokenRequest.validations.expectedValue.templatingStrategy- Verwenden Sie
PEBBLE_V1, wenn Sie Vorlagen für die Werte inaccessTokenRequest.validations.expectedValue.valueverwenden. - Verwenden Sie
NONE, wenn der Wert im FeldaccessTokenRequest.validations.expectedValue.valueeine Konstante ist.
accessTokenRequest.validations.expectedValue.valueVorlagenkonventionen templating-conventions
Abhängig von Ihrer Autorisierungsanpassung müssen Sie möglicherweise auf Datenfelder in der Autorisierungsantwort zugreifen, wie im vorherigen Abschnitt gezeigt. Machen Sie sich dazu bitte mit der Pebble-Vorlagensprache vertraut, die von Adobe verwendet wird, und lesen Sie die unten stehenden Vorlagenkonventionen, um Ihre OAuth 2-Implementierung anzupassen.
{{ authData.accessToken }}{{ response.body.access_token }}{{ response.status }}{{ response.headers.server[0] }}{{ userContext.sandboxName }}{{ userContext.sandboxId }}{{ userContext.imsOrgId }}{{ userContext.client }} // the client executing the authorization attempt
Nächste Schritte next-steps
Durch das Lesen dieses Artikels kennen Sie jetzt die von Adobe Experience Platform unterstützten OAuth 2-Autorisierungsmuster und wissen, wie Sie Ihr Ziel mit OAuth 2-Autorisierungsunterstützung konfigurieren können. Als Nächstes können Sie Ihr OAuth 2-unterstütztes Ziel mithilfe von Destination SDK einrichten. Lesen Sie Verwenden von Destination SDK, um Ihr Ziel zu konfigurieren für die nächsten Schritte.