Skip to main content

Implémentation du flux du serveur Web OAuth 2.0

Remarque

Remarque

Vous souhaitez apprendre en français ? Commencez le défi dans un Trailhead Playground en français et utilisez les traductions fournies entre crochets pour naviguer. Copiez et collez uniquement les valeurs en anglais, car les validations de défi reposent sur les données en anglais. Si vous ne réussissez pas le défi dans votre organisation en français, nous vous recommandons (1) de définir le paramètre régional sur les États-Unis, (2) de définir la langue sur l’anglais en suivant les instructions ici, puis (3) de cliquer à nouveau sur le bouton « Vérifier le défi ».

Consultez le badge Trailhead dans votre langue pour découvrir comment profiter de l’expérience Trailhead traduite.

Sélection d’un flux

Maintenant que vous avez créé une application connectée Customer Order Status (Statut des commandes client) pour les membres du centre d’assistance, vous devez implémenter un flux pour l’application. Étant donné que l’application connectée intègre un service Web externe (le site Web Customer Order Status [Statut des commandes client]) avec l’API Salesforce, vous devez utiliser le flux du serveur Web OAuth 2.0. Ce flux d’autorisation utilise le type d’octroi de code d’autorisation. Si vous avez besoin d’un rappel sur le flux OAuth 2.0, vous pouvez consulter le module Concepts de base des applications connectées.

Demande d’un code d’autorisation

Pour lancer le flux du serveur Web OAuth 2.0, le service Web Customer Order Status (Statut des commandes client) transmet, via l’application connectée, une demande de code d’autorisation (à l’aide du type d’octroi de code d’autorisation) au point de terminaison d’autorisation Salesforce. Un code d’autorisation peut être comparé à un badge de visiteur. Grâce à lui, l’application connectée peut prouver qu’elle est fiable et autorisée à visiter le site ainsi qu’à demander un jeton d’accès.

L’appel est effectué sous la forme d’une redirection HTTP, comme celle indiquée ci-dessous.

https://mycompany.my.salesforce.com/services/oauth2/authorize?
client_id=3MVG9IHf89I1t8hrvswazsWedXWY0i1qK20PSFaInvUgLFB6vrcb9bbWFTSIHpO8G2jxBLJA6uZGyPFC5Aejq&
redirect_uri=https://www.mycustomerorderstatus.com/oauth2/callback&
response_type=code

Si vous ne connaissez pas bien ce type d’appel, ne vous inquiétez pas. Nous allons passer en revue chacun de ses composants.

Composant 1

https://mycompany.my.salesforce.com/services/oauth2/authorize

Cette adresse est le point de terminaison d’autorisation OAuth 2.0 de l’instance Salesforce. Il s’agit du point de terminaison auquel vos applications connectées envoient des demandes d’autorisation OAuth.

Composant 2

client_id=3MVG9IHf89I1t8hrvswazsWedXWY0i1qK20PSFaInvUgLFB6vrcb9bbWFTSIHpO8G2jxBLJA6uZGyPFC5Aejq

L’ID client est la clé consommateur de l’application connectée. Pour accéder à la clé consommateur, depuis la page Manage Connected Apps (Gérer les applications connectées) de l’application connectée, cliquez sur Manage Consumer Details (Gérer les détails du consommateur), puis vérifiez votre identité.

Clé consommateur de l’application connectée sur la page Manage Connected Apps (Gérer les applications connectées).

Composant 3

redirect_uri=https://www.mycustomerorderstatus.com/oauth2/callback

L’URI de redirection est l’emplacement où les utilisateurs sont redirigés après une autorisation réussie. L’URI de redirection est l’URL de rappel de l’application connectée. Elle est aussi disponible sur la page Manage Connected Apps (Gérer les applications connectées) de l’application connectée.

L’image ci-dessous montre l’URL de rappel qui correspond aux exemples de code. Pour votre application connectée, utilisez l’URL de rappel https://openidconnect.herokuapp.com/callback que vous avez saisie dans l’unité 1 : Création d’une application connectée.

URL de rappel de l’application connectée sur la page Manage Connected Apps (Gérer les applications connectées).

Composant 4

response_type=code

Le type de réponse indique à Salesforce quel type d’octroi OAuth 2.0 est demandé par l’application connectée. Le type de réponse « code » indique que l’application connectée demande un code d’autorisation.

Authentification des utilisateurs et octroi de l’accès à l’application

Pour que Salesforce fournisse un code d’autorisation à l’application connectée, vous devez d’abord vous authentifier en vous connectant à votre organisation Salesforce.

Page de connexion invitant l’utilisateur à se connecter à son organisation Salesforce.

Une fois que vous êtes connecté, cliquez sur Allow (Autoriser) pour autoriser l’application connectée à accéder aux données de votre organisation Salesforce.

La page Allow Access (Autoriser l’accès) demande si l’application connectée peut accéder aux données de l’organisation Salesforce.

Réception d’un rappel

Une fois l’application autorisée, Salesforce envoie un rappel à l’application connectée avec un code d’autorisation.

https://www.mycustomerorderstatus.com/oauth2/callback?
code=aPrx4sgoM2Nd1zWeFVlOWveD0HhYmiDiLmlLnXEBgX01tpVOQMWVSUuafFPHu3kCSjzk4CUTZg==

Composant 1

La première partie du rappel correspond à l’URL de rappel de l’application connectée.

https://www.mycustomerorderstatus.com/oauth2/callback

Composant 2

La deuxième partie correspond au code d’autorisation, qui approuve l’application.

code=aPrx4sgoM2Nd1zWeFVlOWveD0HhYmiDiLmlLnXEBgX01tpVOQMWVSUuafFPHu3kCSjzk4CUTZg==

Demande d’un jeton d’accès

Maintenant que l’application connectée dispose d’un code d’autorisation valide, elle le transmet au point de terminaison du jeton Salesforce pour demander un jeton d’accès.

POST /services/oauth2/token HTTP/1.1
Host: mycompany.my.salesforce.com
Content-length: 307
Content-type: application/x-www-form-urlencoded
grant_type=authorization_code&
code=aPrxhgZ2MIpkSy0aOdn07LjKFvsFOis6RGcWXz7p8JQCjcqfed5NQLe7sxWwMY_JQFuLwHRaRA==&
client_id=3MVG9IHf89I1t8hrvswazsWedXWY0iqK20PSFaInvUgLFB6vrcb9bbWFTSIHpO8G2jxBLJA6uZGyPFC5Aejq&
client_secret=*******************&
redirect_uri=https://www.mycustomerorderstatus.com/oauth2/callback

Nous allons aussi passer en revue chacun des composants de l’appel.

Composant 1

POST /services/oauth2/token HTTP/1.1
Host: mycompany.my.salesforce.com
Content-length: 307
Content-type: application/x-www-form-urlencoded

Les deux premières lignes de ce composant correspondent à la requête POST adressée au point de terminaison du jeton OAuth 2.0 de l’instance Salesforce. Ce point de terminaison est l’emplacement auquel vos applications connectées envoient des demandes de jetons d’accès et d’actualisation.

Les deux autres lignes indiquent la longueur et le type du contenu de la demande.

Composant 2

grant_type=authorization_code

Le type d’octroi définit le type de validation que l’application connectée peut fournir pour prouver qu’elle est fiable. Dans ce cas, il s’agit d’un code d’autorisation.

Composant 3

code=aPrxhgZ2MIpkSy0aOdn07LjKFvsFOis6RGcWXz7p8JQCjcqfed5NQLe7sxWwMY_JQFuLwHRaRA

Le code d’autorisation est une valeur temporaire transmise par le serveur d’autorisation (Salesforce dans le cas présent). L’application connectée échange ce code pour obtenir un jeton d’accès. Le type de flux OAuth 2.0 constitue un moyen sécurisé de transmettre le jeton d’accès à l’application.

Composant 4

client_id=3MVG9IHf89I1t8hrvswazsWedXWY0i1qK20PSFaInvUgLFB6vrcb9bbWFTSIHpO8G2jxBLJA6uZGyPFC5Aejq

Vous devez aussi connaître ce composant. Il s’agit de la clé consommateur de l’application connectée issue de la page Manage Connected Apps (Gérer les applications connectées).

Composant 5

client_secret=*******************

Le secret client est identique au secret consommateur de l’application connectée. La procédure d’accès au secret consommateur est identique à celle de la clé consommateur. Sur la page Manage Connected Apps (Gérer les applications connectées), cliquez sur Manage Consumer Details (Gérer les détails du consommateur), puis vérifiez votre identité.

L’image ci-dessous montre l’URL de rappel qui correspond aux exemples de code. Pour votre application connectée, utilisez l’URL de rappel https://openidconnect.herokuapp.com/callback que vous avez saisie dans l’unité 1 : Création d’une application connectée.

Secret consommateur de l’application connectée sur la page Manage Connected Apps (Gérer les applications connectées)

Composant 6

redirect_uri=https://www.mycustomerorderstatus.com/oauth2/callback

Vous vous souvenez de ce composant présent dans les deux premiers appels ? Il s’agit de l’URL de rappel de l’application connectée.

Réception d’un jeton d’accès

Lorsque vous avez créé l’application connectée, vous avez sélectionné l’option Require Secret for Web Server Flow (Demander un secret pour le Flux serveur Web). Cette condition requise signifie que Salesforce ne peut pas attribuer de jeton d’accès à l’application connectée, à moins qu’elle transmette un secret consommateur valide. Lors de cette étape, Salesforce valide donc le code d’autorisation, la clé consommateur et le secret consommateur de l’application connectée.

Une fois que Salesforce a validé les identifiants de l’application connectée, il renvoie un jeton d’accès au format JSON. Le jeton d’accès comprend également des autorisations connexes sous forme d’étendues et un jeton d’identification pour l’application.

{
"access_token": "00DB0000000TfcR!AQQAQFhoK8vTMg_rKA.esrJ2bCs.OOIjJgl.9Cx6O7KqjZmHMLOyVb.U61BU9tm4xRusf7d3fD1P9oefzqS6i9sJMPWj48IK",
"signature": "d/SxeYBxH0GSVko0HMgcUxuZy0PA2cDDz1u7g7JtDHw=",
"scope": "web openid",
"id_token": "eyJraWQiOiIyMjAiLCJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhdF9oYXNoIjoiSVBRNkJOTjlvUnUyazdaYnYwbkZrUSIsInN1YiI6Imh0dHBzOi8vbG9...",
"instance_url": "https://mycompany.my.salesforce.com",
"id": "https://mydomain.my.salesforce.com/id/00DB0000000TfcRMAS/005B0000005Bk90IAC",
"token_type": "Bearer",
"issued_at": "1558553873237"
}

À votre tour

Maintenant, c’est à vous de tester le flux du serveur Web OAuth 2.0. Étant donné que des informations confidentielles sont échangées entre l’instance Salesforce et l’URL de rappel dans le cadre du flux, il est essentiel que ces informations ne soient pas transmises à des emplacements arbitraires. Pour démontrer en toute sécurité le flux d’autorisation, nous utilisons un Playground OpenID Connect sécurisé conçu spécialement à cet effet. Il est hébergé sur un serveur Heroku sécurisé qui affiche le flux d’autorisation tout en protégeant vos données.

Lorsque vous implémentez ce flux dans une situation réelle, il est impératif d’utiliser un hôte sécurisé pour l’URL de rappel afin que vos données soient protégées.

Attelons-nous à la tâche ! Tout d’abord, recueillez des informations sur l’application connectée que vous avez créée à la première étape de ce projet.

  • Clé consommateur
  • Secret consommateur
  • URL de rappel

Vous avez également besoin de l’URL My Domain (Mon domaine) de votre Trailhead Playground qui est disponible dans Setup (Configuration) | My Domain (Mon domaine).

Page My Domain (Mon domaine) affichant le nom de domaine d’une organisation.

Essayez

  1. Ouvrez le Playground OpenID Connect.
  2. Copiez l’URL My Domain (Mon domaine) de votre Trailhead Playground et collez-la après « https:// » en tant qu’hôte de connexion.
  3. Collez la clé consommateur de votre application connectée.
  4. Collez le secret consommateur de votre application connectée. (Le Playground OpenID Connect utilise POST pour envoyer des informations, ce qui signifie que votre secret client n’est pas enregistré.)
  5. Vérifiez que l’URL de rappel de votre application connectée correspond à l’URI de redirection (URL de rappel). Astuce : Vous avez saisi cette URL de rappel lors de la première étape de ce projet.

Playground OpenID Connect avec les champs d’hôte de connexion, d’ID client, de secret client et d’URI de redirection renseignés.

  1. Cliquez sur Next (Suivant) pour envoyer une demande de code d’autorisation. Si vous recevez une invite vous demandant d’autoriser le Playground OpenID Connect à accéder à votre Trailhead Playground, cliquez sur Allow (Autoriser). Lorsque la demande aboutit vous recevez un code d’autorisation. Sur le côté droit de la page, vous pouvez voir votre demande d’autorisation et la réponse du serveur Heroku. Elles doivent ressembler à la demande et à la réponse indiquées ci-dessus.

 

Playground OpenID Connect affichant le code d’autorisation, ainsi que la demande et la réponse pour le code d’autorisation.

  1. Cliquez sur Next (Suivant) pour demander un jeton d’accès. Lorsque la demande aboutit, vous recevez à la fois un jeton d’accès et un jeton d’ID. Sur le côté droit de la page, vous pouvez voir votre demande de jeton d’accès et la réponse du serveur Heroku. Elles doivent ressembler à la demande et à la réponse indiquées ci-dessus. 

Playground OpenID Connect affichant le jeton d’accès et le jeton d’ID, ainsi que la demande et la réponse pour le jeton d’accès.

  1. Cliquez à nouveau sur Next (Suivant) pour renvoyer le jeton d’accès au serveur Heroku. Le serveur Heroku doit transmettre en réponse les métadonnées de votre application connectée.

Crédit supplémentaire : accès aux données relatives au statut des commandes

Félicitations ! Vous avez implémenté le flux du serveur Web OAuth 2.0. Désormais, l’application connectée Customer Order Status (Statut des commandes client) peut envoyer une demande à votre organisation Salesforce afin d’accéder aux données relatives au statut des commandes pour une commande spécifique. La demande de l’application connectée inclut le jeton d’accès. Une fois que votre organisation Salesforce a validé le jeton d’accès et les étendues associées, elle accorde à l’application l’accès aux données relatives au statut des commandes.

Si vous souhaitez aller plus loin, vous pouvez récupérer le statut d’une commande en procédant comme suit.

  1. Créez une commande dans votre Trailhead Playground. Reportez-vous à Commandes dans l’aide Salesforce.
  2. Utilisez la requête cURL appropriée pour récupérer le statut de votre nouvelle commande via l’API REST Salesforce. Conseil Conseil : la plate-forme macOS prend automatiquement en charge cURL, tout comme Windows 10 build 17063. Si l’outil cURL n’est pas déjà installé sur votre plate-forme, vous pouvez le télécharger sur la page https://curl.haxx.se/.
    Si vous utilisez une plate-forme autre que macOS ou Windows, comme Linux, modifiez la requête cURL si nécessaire pour vous conformer aux exigences de votre plate-forme.
    Requête cURL pour Mac : curl https://<your_trailhead_domain>/services/data/v55.0/sobjects/Order/<order_ID>\?fields\=Status -H ’Authorization: Bearer <access_token>’ -H "X-PrettyPrint:1"
    Requête cURL pour Windows : curl https://<your_trailhead_domain>/services/data/v55.0/sobjects/Order/<order_ID>?fields=Status -H “Authorization: Bearer <access_token>” -H "X-PrettyPrint:1"
    Dans la requête cURL, veillez à remplacer :
    • <Your_trailhead_domain> (votre_domaine_trailhead) par le nom de domaine de votre Trailhead Playground ;
    • <order_ID> (ID_commande) par l’ID de commande qui se trouve dans l’URL de la page Order (Commande) ; 

ID de commande affiché dans l’URL de la page Order (Commande).

    • <access_token> (jeton_accès) par le jeton d’accès transmis par votre Playground OpenID Connect.
  1. Lorsque la requête aboutit, vous devez recevoir une réponse comme celle-ci :
    {
    "attributes" : {
    "type" : "Order",
    "url" : "/services/data/v55.0/sobjects/Order/8014P000001s9OLXXX"
    },
    "Status" : "Draft",
    "Id" : "8014P000001s9OLXXX"
    }

Gestion de votre application connectée

Il est maintenant temps de jouer le rôle d’administrateur Salesforce. Dans l’étape suivante, vous allez gérer les accès à l’application connectée.

Ressources

Partagez vos commentaires sur Trailhead dans l'aide Salesforce.

Nous aimerions connaître votre expérience avec Trailhead. Vous pouvez désormais accéder au nouveau formulaire de commentaires à tout moment depuis le site d'aide Salesforce.

En savoir plus Continuer à partager vos commentaires