Loading
Identification de vos utilisateurs et gestion de l’accès
Flux de jeton d'actualisation OAuth 2.0 pour des sessions renouvelées

Flux de jeton d'actualisation OAuth 2.0 pour des sessions renouvelées

Le flux de jeton d'actualisation OAuth 2.0 renouvelle les jetons d'accès émis par le flux du serveur Web OAuth 2.0 ou le flux utilisateur-agent OAuth 2.0.

Éditions requises

Disponible avec : Salesforce Classic (pas disponible dans toutes les organisations) et Lightning Experience
Disponible avec : Toutes les éditions

Lorsqu'un client reçoit un jeton accès, via une application connectée, il peut utiliser un jeton d'actualisation pour obtenir une nouvelle session lorsque la session actuelle expire. La valeur d'expiration de session de l'application connectée détermine quand un jeton d'accès n'est plus valide et quand un nouveau jeton doit être demandé en utilisant un jeton d'actualisation.

Pour plus de sécurité, activez la rotation du jeton d'actualisation dans votre application connectée ou application cliente externe lorsque vous configurez ses paramètres OAuth. Lorsque ce paramètre est activé, l'application connectée émet un nouveau jeton d'actualisation chaque fois que le flux est invoqué. Le jeton d'actualisation précédent est automatiquement invalidé. La rotation de jeton d'actualisation garantit que chaque jeton d'actualisation n’est utilisé qu’une seule fois par utilisateur. Par conséquent, un jeton d’actualisation ne peut pas être utilisé pour obtenir un nouveau jeton d’accès. Si un utilisateur tente d'utiliser un jeton d'actualisation qui a été permuté, Salesforce invalide le jeton d'actualisation actuel et tous les jetons d'accès associés. Pour obtenir un nouveau jeton d'actualisation, le client doit compléter un nouveau flux.

Le flux de jeton d'actualisation implique les étapes ci-dessous.

  1. L'application connectée utilise le jeton d'actualisation existant pour demander un nouveau jeton d'accès.
  2. Après avoir vérifié la requête, Salesforce accorde un nouveau jeton accès au client.

Demander un jeton d'accès

Une application connectée peut utiliser le jeton d'actualisation pour obtenir un nouveau jeton accès en envoyant l'une des requêtes POST de jeton d'actualisation ci-dessous au point de terminaison de jeton Salesforce.

L'application connectée peut envoyer client_id et client_secret dans le corps de la requête POST de jeton d'actualisation, comme indiqué ici.

POST /services/oauth2/token HTTP/1.1
Host: login.salesforce.com/ 
grant_type=refresh_token&
client_id=3MVG9lKcPoNINVBIPJjdw1J9LLM82HnFVVX19KY1uA5mu0QqEWhqKpoW3svG3XHrXDiCQjK1mdgAvhCscA9GE&client_secret=1955279925675241571&
refresh_token=your token here 

Au lieu d'envoyer les identifiants client en tant que paramètres dans le corps de la requête POST du jeton d'actualisation, vous pouvez utiliser le schéma d'authentification de base HTTP. Le format de ce schéma nécessite client_id et client_secret dans l'en-tête d'autorisation de la requête POST, comme suit :

Authorization: Basic64Encode(client_id:secret)

Les client_id et les client_secret sont séparés par deux points (:). Pour plus d’informations, consultez OAuth 2.0 Authorization Framework.

Cet exemple présent une requête POST de jeton d'actualisation qui utilise le schéma d'authentification de base HTTP, au lieu d'envoyer les identifiants clients dans le corps de la requête POST.

POST /services/oauth2/token HTTP/1.1
Host: login.salesforce.com
Authorization:  Basic 
client_id=3MVG9lKcPoNINVBIPJjdw1J9LLM82HnFVVX19KY1uA5mu0QqEWhqKpoW3svG3XHrXDiCQjK1mdgAvhCscA9GE&
client_secret=1955279925675241571
grant_type=refresh_token&
refresh_token=your token here 
Remarque
Remarque Si client_id et client_secret sont envoyés dans le corps du POST, l'en-tête d'autorisation est ignoré.

Évitez d'envoyer des requêtes simultanées contenant le même jeton d'actualisation. Si votre client envoie des requêtes identiques en même temps, certaines échouent par intermittence et la colonne Statut de l'historique des connexions affiche Échoué : La demande de jeton est déjà en cours de traitement. Au lieu d'envoyer continuellement des requêtes pour de nouveaux jetons d'accès, mettez en cache et réutilisez à la place des jetons. Si vous envoyez des requêtes simultanées avec le même jeton d'actualisation, ce qui n'est pas recommandé, développez un moyen de réessayer les requêtes en cas d'erreur.

Avec les deux formats de requête POST de jeton d'actualisation, insérez les paramètres ci-dessous.

Important
Important Lors du développement d'intégrations OAuth, transmettez toujours des informations confidentielles dans le corps d'une requête POST ou dans un en-tête de requête. N'utilisez pas les paramètres GET dans la chaîne de requête URL pour transmettre des informations confidentielles. Les informations confidentielles comprennent, sans s'y limiter, les noms d'utilisateur, les mots de passe, les jetons OAuth, les secrets clients et toute information d'identification personnelle. Pour plus d'informations sur les meilleures pratiques de sécurité, consultez Stockage des données confidentielles dans le Secure Coding Guide.
Paramètre Description
client_id La clé consommateur de l'application connectée. Pour accéder à la clé consommateur, dans le Gestionnaire d'applications, recherchez l'application connectée, puis sélectionnez Afficher dans la liste déroulante. Cliquez ensuite sur Gérer les détails du consommateur. Vous pouvez être invité à confirmer votre identité avant d'être autorisé à afficher la clé consommateur.
client_secret Le secret consommateur de l'application connectée. Pour accéder au secret consommateur, dans le Gestionnaire d'applications, recherchez l'application connectée, puis sélectionnez Afficher dans la liste déroulante. Cliquez ensuite sur Gérer les détails du consommateur. Vous pouvez être invité à confirmer votre identité avant d'être autorisé à afficher le secret consommateur.
grant_type Le type d'autorisation d'accès OAuth 2.0 que demande l'application connectée. La valeur doit être refresh_token pour ce flux.
refresh_token Le jeton obtenu du flux de jetons serveur Web, utilisateur-agent ou application hybride. Cette valeur est un secret. Prenez les mesures appropriées pour la protéger. Ce paramètre est renvoyé uniquement si votre application connectée est configurée avec une étendue refresh_token.
client_assertion Au lieu de passer un client_secret, vous pouvez fournir un client_assertion et un client_assertion_type. Si aucun paramètre client_secret n'est fourni, Salesforce vérifie client_assertion et client_assertion_type. Consultez Utilisation de client_assertion au lieu de client_secret.
client_assertion_type

Saisissez cette valeur en utilisant le paramètre client_assertion.

La valeur de client_assertion_type doit être urn:ietf:params:oauth:client-assertion-type:jwt-bearer.

format

S'il n'est pas inclus dans l'en-tête de la requête, vous pouvez spécifier le format de retour attendu. Le paramètre format est prioritaire sur l'en-tête l'en-tête de demande. Les formats suivants sont pris en charge :

  • urlencoded
  • json (par défaut)
  • xml

Salesforce accorde un nouveau jeton accès

Après avoir vérifié la requête, Salesforce envoie à l'application connectée une réponse contenant un nouveau jeton d'accès.

Voici un exemple de réponse JSON de Salesforce :

{ 
"id":"https://login.salesforce.com/id/00Dx0000000BV7z/005x00000012Q9P",
"issued_at":"1278448384422",
"instance_url":"https://yourInstance.salesforce.com/",
"signature":"SSSbLO/gBhmmyNUvN18ODBDFYHzakxOMgqYtu+hDPsc=",
"access_token":"00Dx0000000BV7z!AR8AQP0jITN80ESEsj5EbaZTFG0RNBaT1cyWk7TrqoDjoNIWQ2ME_sTZzBjfmOE6zMHq6y8PIW4eWze9JksNEkWUl.Cju7m4",
"token_type":"Bearer",
"scope":"id api refresh_token"
}

Voici un exemple de réponse XML :

<Oauth>
   <access_token>00Dx0000000BV7z!AR8AQP0jITN80ESEsj5EbaZTFG0RNB
       aT1cyWk7TrqoDjoNIWQ2ME_sTZzBjfmOE6zMHq6y8PIW4eWze9JksNEkWUl.Cju7m4 
   </access_token>
   <token_type>Bearer
   </token_type>
   <scope>id api refresh_token
   </scope>
   <instance_url>https://yourInstance.salesforce.com/</instance_url>
   <id>https://login.salesforce.com/id/00Dx0000000BV7z/005x00000012Q9P</id>
   <issued_at>1278448101416</issued_at>
   <signature>CMJ4l+CCaPQiKjoOEwEig9H4wqhpuLSk4J2urAe+fVg=</signature>
</Oauth>

Cet exemple montre une réponse codée en URL.

access_token=00Dx0000000BV7z%21AR8AQP0jITN80ESEsj5EbaZTFG0RNBaT1cyWk7TrqoDjoNIWQ2
ME_sTZzBjfmOE6zMHq6y8PIW4eWze9JksNEkWUl.Cju7m4
&token_type=Bearer&scope=id%20api%20refresh_token
&instance_url=https%3A%2F%2FyourInstance.salesforce.com
&id=https://login.salesforce.com%2Fid%2F00Dx0000000BV7z%2F005x00000012Q9P
&issued_at=1278448101416
&signature=CMJ4l%2BCCaPQiKjoOEwEig9H4wqhpuLSk4J2urAe%2BfVg%3D

Si la rotation du jeton d'actualisation est activée pour l'application connectée ou l'application cliente externe, la réponse inclut un nouveau jeton d'actualisation. Voici un exemple de réponse JSON si la rotation du jeton d'actualisation est activée.

{ 
"access_token":"00Dx0000000BV7z!AR8AQP0jITN80ESEsj5EbaZTFG0RNBaT1cyWk7T...",
"refresh_token":"CjAwRHgwMDAwMDAwQlY3eiFBUjhBUVAwaklUTjgwRVNFc2o1RWJhWl...",
"signature":"SSSbLO/gBhmmyNUvN18ODBDFYHzakxOMgqYtu+hDPsc=",
"scope":"id api refresh_token",
"instance_url":"https://yourInstance.salesforce.com/",
"id":"https://login.salesforce.com/id/00Dx0000000BV7z/005x00000012Q9P"
"token_type":"Bearer",
"issued_at":"1278448384422",
}

Les paramètres ci-dessous peuvent être inclus dans le corps de la réponse.

Paramètre Description
access_token Le jeton OAuth utilisé par une application connectée pour demander l'accès à une ressource protégée au nom de l'application cliente. Des autorisations supplémentaires sous forme d'étendues peuvent accompagner le jeton d'accès.
refresh_token Un nouveau jeton d'actualisation. Utilisez le jeton d'actualisation pour obtenir un nouveau jeton d'accès lors de la prochaine invocation du flux de jeton d'actualisation. Ce paramètre est inclus uniquement si vous activez la rotation du jeton d'actualisation pour votre application connectée ou application cliente externe.
token_type Un type de jeton Bearer, utilisé pour toutes les réponses qui incluent un jeton d'accès.
token_format

Si votre application connectée ou application cliente externe est activée pour émettre des jetons d'accès basés sur JWT (JSON Web Token), votre réponse inclut ce paramètre pour indiquer le format du jeton d'accès. La valeur est jwt.

Ce paramètre n'est pas inclus si votre application émet des jetons d'accès opaques.

instance_url Une URL indiquant l'instance de l'organisation de l'utilisateur. Par exemple : https://yourInstance.salesforce.com/.
id Une URL d'identité qui peut être utilisée pour identifier l'utilisateur et pour demander plus d'informations sur l'utilisateur. Consultez URL d'identité.
issued_at Horodatage indiquant à quel moment la signature a été créée, en millisecondes.
signature La signature HMAC-SHA256 codée en Base64 signée par le client_secret. La signature peut contenir l'ID concaténé et issued_at value que vous pouvez utiliser, afin de vérifier que l'URL d'identité a changé depuis que le serveur l'a envoyée.
sfdc_site_url Si l'utilisateur est membre d'un site Experience Cloud, l'URL du site est fournie.
sfdc_site_id Si l'utilisateur est membre d'un site Experience Cloud, l'ID du site de l'utilisateur est fourni.
 
Chargement
Salesforce Help | Article