Autorisation OAuth 2
Destination SDK prend en charge plusieurs méthodes d’autorisation pour votre destination. Parmi celles-ci, vous pouvez vous authentifier à votre destination à l’aide de la structure d’autorisation OAuth 2.
Cette page décrit les différents flux d’autorisation OAuth 2 pris en charge par Destination SDK et fournit des instructions pour configurer l’autorisation OAuth 2 pour votre destination.
Types d’intégration pris en charge supported-integration-types
Pour en savoir plus sur les types d’intégration qui prennent en charge les fonctionnalités décrites sur cette page, consultez le tableau ci-dessous.
Comment ajouter des détails d’autorisation OAuth 2 à votre configuration de destination how-to-setup
Conditions préalables dans votre système prerequisites
Pour commencer, vous devez créer une application dans votre système pour Adobe Experience Platform ou enregistrer Experience Platform dans votre système. L’objectif est de générer un ID client et un secret client, qui sont nécessaires pour authentifier l’Experience Platform sur votre destination.
Dans le cadre de cette configuration, vous avez besoin des adresses URL de redirection/rappel OAuth 2 d’Adobe Experience Platform, que vous pouvez obtenir à partir de la liste ci-dessous.
https://platform-va7.adobe.io/data/core/activation/oauth/api/v1/callback
https://platform-nld2.adobe.io/data/core/activation/oauth/api/v1/callback
https://platform-aus5.adobe.io/data/core/activation/oauth/api/v1/callback
https://platform-can2.adobe.io/data/core/activation/oauth/api/v1/callback
https://platform-gbr9.adobe.io/data/core/activation/oauth/api/v1/callback
https://platform.adobe.io/data/core/activation/oauth/api/v1/callback
À la fin de cette étape, vous devez disposer des éléments suivants :
- un identifiant client ;
- un secret client ;
- une URL de rappel d’Adobe (pour l’octroi du code d’autorisation).
À faire dans Destination SDK to-do-in-destination-sdk
Pour configurer l’autorisation OAuth 2 pour votre destination en Experience Platform, vous devez ajouter les détails OAuth 2 à la configuration de destination, sous le paramètre customerAuthenticationConfigurations
. Pour obtenir des exemples détaillés, consultez l’authentification du client. Vous trouverez ci-dessous des instructions spécifiques sur les champs à ajouter à votre modèle de configuration, en fonction de votre type d’octroi d’autorisation OAuth 2.
Types d’octroi OAuth 2 pris en charge oauth2-grant-types
Experience Platform prend en charge les trois types de subventions OAuth 2 dans le tableau ci-dessous. Si vous disposez d’une configuration OAuth 2 personnalisée, Adobe peut la prendre en charge à l’aide de champs personnalisés de votre intégration. Pour plus d’informations, consultez les sections de chaque type d’octroi.
- Vous devez fournir les paramètres d’entrée comme indiqué dans les sections ci-dessous. Les systèmes internes d’Adobe se connectent au système d’autorisation de votre plateforme et prennent les paramètres de sortie, qui sont utilisés pour authentifier l’utilisateur et conserver l’autorisation sur votre destination.
- Les paramètres d’entrée mis en évidence en gras dans le tableau sont des paramètres requis dans le flux d’autorisation OAuth 2. Les autres paramètres sont facultatifs. D’autres paramètres d’entrée personnalisés ne sont pas affichés ici, mais sont décrits en détail dans les sections Personnalisation de votre configuration OAuth 2 et Actualisation du jeton d’accès.
- clientId
- clientSecret
- portée
- authorizationUrl
- accessTokenUrl
- refreshTokenUrl
- accessToken
- expiresIn
- refreshToken
- tokenType
- clientId
- clientSecret
- portée
- accessTokenUrl
- username
- password
- accessToken
- expiresIn
- refreshToken
- tokenType
- clientId
- clientSecret
- portée
- accessTokenUrl
- accessToken
- expiresIn
- refreshToken
- tokenType
Le tableau ci-dessus répertorie les champs utilisés dans les flux OAuth 2 standard. Outre ces champs standard, diverses intégrations de partenaires peuvent demander des entrées et des sorties supplémentaires. Adobe a conçu un framework d’autorisation OAuth 2 flexible pour les Destinations SDK qui peut gérer des variations du modèle de champs standard ci-dessus tout en prenant en charge un mécanisme de génération automatique de sorties non valides, telles que les jetons d’accès expirés.
Dans tous les cas, la sortie comprend un jeton d’accès, utilisé par l’Experience Platform pour authentifier et conserver l’autorisation d’accès à votre destination.
Le système que Adobe a conçu pour l’autorisation OAuth 2 :
- prend en charge les trois autorisations OAuth 2 tout en tenant compte des variations qu’elles comportent, telles que les champs de données supplémentaires, les appels API non standard, etc. ;
- prend en charge les jetons d’accès avec des valeurs de durée de vie variables, qu’il s’agisse de 90 jours, 30 minutes ou de toute autre valeur de durée de vie que vous spécifiez ;
- prend en charge les flux d’autorisation OAuth 2 avec ou sans jetons d’actualisation.
OAuth 2 avec code d’autorisation authorization-code
Si la destination prend en charge un flux de code d’autorisation OAuth 2.0 standard (lisez la section Spécifications des normes RFC) ou une variante de celle-ci, consultez les champs obligatoires et facultatifs ci-dessous :
- clientId
- clientSecret
- portée
- authorizationUrl
- accessTokenUrl
- refreshTokenUrl
- accessToken
- expiresIn
- refreshToken
- tokenType
Pour configurer cette méthode d’autorisation pour votre destination, ajoutez les lignes suivantes à votre configuration, lorsque vous créez une configuration de destination :
{
//...
"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"]
}
]
//...
}
authType
grant
accessTokenUrl
authorizationUrl
refreshTokenUrl
refreshTokenUrl
est identique à l’URL de jeton d’accès accessTokenUrl
.clientId
clientSecret
scope
OAuth 2 avec octroi de mot de passe
Pour octroyer le mot de passe OAuth 2 (lisez la section Spécifications des normes RFC), Experience Platform demande le nom d’utilisateur et le mot de passe de l’utilisateur. Dans le flux d’autorisation, Experience Platform exchange ces informations d’identification pour un jeton d’accès et éventuellement un jeton d’actualisation.
Adobe utilise les entrées standard ci-dessous pour simplifier la configuration de destination, avec la possibilité de remplacer des valeurs :
- clientId
- clientSecret
- portée
- accessTokenUrl
- username
- password
- accessToken
- expiresIn
- refreshToken
- tokenType
username
et password
dans la configuration ci-dessous. Quand vous ajoutez "grant": "OAUTH2_PASSWORD"
dans la configuration de destination, le système demande à l’utilisateur de fournir un nom d’utilisateur et un mot de passe dans l’interface utilisateur d’Experience Platform, quand il s’authentifie à la destination.Pour configurer cette méthode d’autorisation pour votre destination, ajoutez les lignes suivantes à votre configuration, lorsque vous créez une configuration de destination :
{
//...
"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"]
}
]
authType
grant
accessTokenUrl
clientId
clientSecret
scope
OAuth 2 avec octroi dʼinformations d’identification du client
Vous pouvez configurer des informations d’identification du client OAuth 2 (consultez la section Spécifications des normes RFC), qui prend en charge les entrées et sorties standard répertoriées ci-dessous. Vous pouvez personnaliser les valeurs. Pour en savoir plus, consultez la section Personnaliser votre configuration OAuth 2.
- clientId
- clientSecret
- portée
- accessTokenUrl
- accessToken
- expiresIn
- refreshToken
- tokenType
Pour configurer cette méthode d’autorisation pour votre destination, ajoutez les lignes suivantes à votre configuration, lorsque vous créez une configuration de destination :
{
//...
"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"]
}
]
//...
}
authType
grant
accessTokenUrl
refreshTokenUrl
refreshTokenUrl
est identique à l’URL de jeton d’accès accessTokenUrl
.clientId
clientSecret
scope
Personnalisation de votre configuration OAuth 2 customize-configuration
Les configurations décrites dans les sections ci-dessus décrivent les octrois OAuth 2 standard. Cependant, le système conçu par Adobe offre une certaine flexibilité afin de vous permettre d’utiliser des paramètres personnalisés pour n’importe quelle variante de l’octroi OAuth 2. Pour personnaliser les paramètres OAuth 2 standard, utilisez les paramètres authenticationDataFields
, comme illustrés dans les exemples ci-dessous.
Exemple 1 : utilisation de authenticationDataFields
pour capturer des informations provenant de la réponse d’autorisation example-1
Dans cet exemple, une plateforme de destination dispose de jetons d’actualisation qui expirent après un certain temps. Dans ce cas, le partenaire configure le champ personnalisé refreshTokenExpiration
pour obtenir l’expiration du jeton d’actualisation à partir du champ refresh_token_expires_in
dans la réponse de l’API.
{
"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"
}
]
}
]
}
Exemple 2 : utilisation de authenticationDataFields
pour fournir un jeton d’actualisation spécial example-2
Dans cet exemple, un partenaire configure sa destination pour fournir un jeton d’actualisation spécial. En outre, la date d’expiration des jetons d’accès n’est pas renvoyée dans la réponse de l’API. Une valeur par défaut, ici 3 600 secondes, peut donc être codée en dur.
"authenticationDataFields": [
{
"name": "refreshToken",
"value": "special_refresh_token"
},
{
"name": "expiresIn",
"value": 3600
}
]
Exemple 3 : l’utilisateur saisit l’identifiant et le secret client au moment de la configuration de la destination example-3
Dans cet exemple, au lieu de créer un identifiant client global et un secret client comme illustré dans la section Conditions préalables dans votre système, le client doit saisir l’identifiant du client, le secret client et l’identifiant de compte (l’identifiant que le client utilise pour se connecter à la destination)
{
//...
"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"
}
]
}
}
]
//...
}
Vous pouvez utiliser les paramètres suivants dans authenticationDataFields
pour personnaliser votre configuration OAuth 2 :
authenticationDataFields.name
authenticationDataFields.title
authenticationDataFields.description
authenticationDataFields.type
Valeurs acceptées :
string
, boolean
, integer
authenticationDataFields.isRequired
authenticationDataFields.format
"format":"password"
, Adobe chiffre la valeur du champ de données d’autorisation. Utilisé avec "fieldType": "CUSTOMER"
, cela masque également l’entrée dans l’interface utilisateur quand l’utilisateur saisit le champ.authenticationDataFields.fieldType
authenticationDataFields.value
authenticationDataFields.type
.authenticationDataFields.authenticationResponsePath
Actualisation du jeton d’accès access-token-refresh
Adobe a conçu un système qui actualise les jetons d’accès expirés sans demander à l’utilisateur de se reconnecter à la plateforme. Le système peut générer un nouveau jeton afin de faciliter l’activation vers la destination pour le client.
Pour configurer l’actualisation du jeton d’accès, vous devrez peut-être configurer une requête HTTP modélisée qui permet à Adobe d’obtenir un nouveau jeton d’accès à l’aide d’un jeton d’actualisation. Si le jeton d’accès a expiré, Adobe accepte votre requête modélisée, en ajoutant les paramètres que vous avez fournis. Utilisez le paramètre accessTokenRequest
pour configurer un mécanisme d’actualisation du jeton d’accès.
{
"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"
}
}
]
}
}
]
}
Vous pouvez utiliser les paramètres suivants dans accessTokenRequest
pour personnaliser votre processus d’actualisation du jeton d’accès :
accessTokenRequest.destinationServerType
URL_BASED
.accessTokenRequest.urlBasedDestination.url.templatingStrategy
- Utilisez
PEBBLE_V1
si vous utilisez des modèles pour la valeur dansaccessTokenRequest.urlBasedDestination.url.value
. - Utilisez
NONE
si la valeur du champaccessTokenRequest.urlBasedDestination.url.value
est une constante.
accessTokenRequest.urlBasedDestination.url.value
accessTokenRequest.httpTemplate.requestBody.templatingStrategy
- Utilisez
PEBBLE_V1
si vous utilisez des modèles pour les valeurs dansaccessTokenRequest.httpTemplate.requestBody.value
. - Utilisez
NONE
si la valeur du champaccessTokenRequest.httpTemplate.requestBody.value
est une constante.
accessTokenRequest.httpTemplate.requestBody.value
accessTokenRequest.httpTemplate.httpMethod
POST
.accessTokenRequest.httpTemplate.contentType
Par exemple,
application/x-www-form-urlencoded
ou application/json
.accessTokenRequest.httpTemplate.headers
accessTokenRequest.responseFields.templatingStrategy
- Utilisez
PEBBLE_V1
si vous utilisez des modèles pour les valeurs dansaccessTokenRequest.responseFields.value
. - Utilisez
NONE
si la valeur du champaccessTokenRequest.responseFields.value
est une constante.
accessTokenRequest.responseFields.value
accessTokenRequest.validations.name
accessTokenRequest.validations.actualValue.templatingStrategy
- Utilisez
PEBBLE_V1
si vous utilisez des modèles pour les valeurs dansaccessTokenRequest.validations.actualValue.value
. - Utilisez
NONE
si la valeur du champaccessTokenRequest.validations.actualValue.value
est une constante.
accessTokenRequest.validations.actualValue.value
accessTokenRequest.validations.expectedValue.templatingStrategy
- Utilisez
PEBBLE_V1
si vous utilisez des modèles pour les valeurs dansaccessTokenRequest.validations.expectedValue.value
. - Utilisez
NONE
si la valeur du champaccessTokenRequest.validations.expectedValue.value
est une constante.
accessTokenRequest.validations.expectedValue.value
Conventions relatives aux modèles templating-conventions
Selon la personnalisation de votre autorisation, vous devrez peut-être accéder aux champs de données dans la réponse d’autorisation, comme indiqué dans la section précédente. Pour ce faire, familiarisez-vous avec le langage de modèle Pebble utilisé par Adobe et consultez les conventions de création de modèles ci-dessous pour personnaliser votre implémentation OAuth 2.
{{ 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
Étapes suivantes next-steps
En lisant cet article, vous comprenez maintenant les modèles d’autorisation OAuth 2 pris en charge par Adobe Experience Platform et vous savez comment configurer votre destination avec la prise en charge de l’autorisation OAuth 2. Vous pouvez désormais configurer la destination avec prise en charge d’OAuth 2 à l’aide de Destination SDK. Pour connaître les étapes suivantes, consultez la documentation Utilisation de Destination SDK pour configurer la destination.