Flux d'appareil OAuth 2.0 pour l'intégration IoT
Pour intégrer des applications exécutées sur des appareils dotés de capacités de saisie ou d'affichage limitées, par exemple des Smart TV, des appareils électroniques ou d'autres appareils Internet des objets, utilisez le flux d'appareil OAuth 2.0. Les applications de ligne de commande peuvent également utiliser ce flux. Les utilisateurs peuvent connecter ces applications à Salesforce en accédant à un navigateur sur un appareil doté de capacités plus avancées, par exemple un ordinateur portable ou un appareil mobile.
Éditions requises
| Disponible avec : Salesforce Classic et Lightning Experience |
| Disponible avec : Toutes les éditions |
Par exemple, un utilisateur contrôle l'éclairage de sa maison avec un appareil bluetooth pendant son absence. Vous pouvez créer une application cliente externe pour l'appareil bluetooth afin d'activer ce flux.
- L'utilisateur ouvre l'application bluetooth sur son appareil mobile et clique sur Allumer.
- L'application cliente externe publie une requête au point de terminaison de jeton Salesforce.
- Salesforce vérifie la requête et renvoie un code utilisateur lisible, une URL de vérification et un code d'appareil.
- L'appareil bluetooth affiche le code de l'appareil et demande à l'utilisateur de le saisir à l'URL de vérification spécifiée. L'application commence également à interroger le point de terminaison de jeton Salesforce pour l'autorisation.
- L'utilisateur clique sur le lien de l'URL de vérification et saisit le code.
- L'utilisateur autorise ensuite l'application à accéder à ses données protégées, l'emplacement de son domicile dans le cas présent.
- Salesforce envoie un jeton d'accès et d'actualisation à l'application cliente externe.
- L'appareil bluetooth peut accéder au domicile de l'utilisateur et allumer les lumières.
Examinons les étapes de ce flux d'autorisation.
- Demande d'autorisation par l'appareil
- Salesforce renvoie des codes de vérification
- Authentification et autorisation de l'utilisateur pendant que l'appareil interroge le point de terminaison de jeton
- Salesforce accorde un jeton d'accès
Demande d'autorisation par l'appareil
Pour initier le flux d'autorisation, l'appareil publie, via une application cliente externe, une demande d'autorisation au point de terminaison de jeton Salesforce.
Par exemple :
POST /services/oauth2/token HTTP/1.1
Host: login.salesforce.com
Content-Type: application/x-www-form-urlencoded
response_type=device_code&
client_id=3MVG9PhR6g6B7ps7TTI4cP7Mppg3l7tu.MRAYULyVqcmA9hGLpHiiS.Q7rO9yjlmffiBUM6tFpYAlXEkRjHb9&scope=apiInsérez les paramètres ci-dessous dans la demande.
| Paramètre | Description |
|---|---|
Request Header
|
L'en-tête de la requête contient les informations suivantes :
|
response_type
|
Le type d'octroi OAuth 2.0 demandé par l'application cliente externe. La valeur de ce flux doit être device_code. |
client_id
|
La clé consommateur de l'application cliente externe. Pour accéder à la clé consommateur, dans le Gestionnaire d'application cliente externe, recherchez l'application cliente externe, puis sélectionnez Modifier les paramètres dans la liste déroulante. Agrandissez ensuite la section Paramètres OAuth, puis cliquez sur Clé et secret consommateur. Vous pouvez être invité à confirmer votre identité avant d'être autorisé à afficher la clé consommateur. |
scope
|
Facultatif. Autorisations qui définissent le type de ressources protégées auxquelles une application cliente externe peut accéder. Vous attribuez des étendues à une application cliente externe lors de son élaboration, et elles sont incluses avec les jetons OAuth pendant le flux d'autorisation. Si vous n'incluez pas ce paramètre, toutes les étendues attribuées à l'application cliente externe sont demandées. Les étendues transmises dans ce paramètre doivent être un sous-ensemble des étendues enregistrées. Pour les paramètres valides, consultez Étendues OAuth. |
Salesforce renvoie des codes de vérification
Après avoir vérifié la requête, Salesforce renvoie un code utilisateur lisible, une URL de vérification et un code d'appareil.
Cet exemple de réponse renvoie ces valeurs avec un code de statut de réussite de 200.
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store
{
"device_code":"M01WRzlQaFI2ZzZCN3BzN1RUSTRjUDdNcHBnM2w3dHUuTVJBWVVMeVZxY21BOWhHTHBIaWlTLlE3ck85eWpsbWZmaUJVTTZ0RnBZQWxYRWtSakhiOTsxMC4yMi4zNC45MjsxNDc3Njc0NDg3NTA1O1gxRDlTRUVU",
"user_code":"X1D9SEET",
"verification_uri":"https://acme.my.salesforce.com/setup/connect",
"interval":5
}
Les paramètres ci-dessous sont inclus dans la réponse.
| Paramètre | Description |
|---|---|
Response Header
|
L'en-tête de réponse contient les informations suivantes :
|
device_code
|
Un code de vérification pour l'appareil. Ce code est valide pendant 10 minutes. Le code peut inclure des lettres majuscules, des lettres minuscules et des chiffres. Salesforce peut modifier à tout moment la mise en forme des codes d'appareil. Lorsque vous développez des intégrations qui utilisent ce flux, ne faites pas d'hypothèses sur le format et la longueur du code de l'appareil. |
user_code
|
Un code de vérification pour l'utilisateur final, envoyé sous forme de code alphanumérique à huit chiffres. L'utilisateur doit saisir ce code à l'URL de vérification. Ce code est valide pendant 10 minutes. |
verification_uri
|
L'URL de vérification de l'utilisateur dans le serveur d'autorisation. L'utilisateur doit saisir ce code à l'URL de vérification. Avec la vérification via une URL de connexion Mon domaine ou une URL de site Experience Cloud, verification_uri reflète l'URL qui a initié le flux. Par exemple, si l'appareil envoie une demande de jeton à https://acme.my.salesforce.com/services/oauth2/token, la valeur verification_uri est https://acme.my.salesforce.com/setup/connect. Vous pouvez également ajouter le paramètre |
interval
|
Le nombre minimal de secondes d'attente que nous recommandons entre les requêtes d'interrogation au point de terminaison de jeton. |
Authentification et autorisation de l'utilisateur pendant que l'appareil interroge le point de terminaison de jeton
L'application cliente de l'appareil invite l'utilisateur à visiter l'URL de vérification sur un ordinateur ou un appareil mobile, puis à saisir le code utilisateur. L'utilisateur ouvre un navigateur, accède à l'URL de vérification, puis saisit le code affiché sur l'appareil. Si le code est valide, l'utilisateur se connecte normalement. Une fois la connexion réussie, l'utilisateur autorise l'appareil à accéder aux données de compte Salesforce.
Pendant ce temps, après avoir affiché le code utilisateur et l'URL de vérification, l'application cliente de l'appareil interroge à répétition le point de terminaison de jeton. Il vérifie que l'utilisateur a autorisé l'accès et que le serveur d'autorisation à émis le jeton d'accès.
Voici un exemple de requête d'interrogation :
POST /services/oauth2/token HTTP/1.1
Host: login.salesforce.com
Content-Type: application/x-www-form-urlencoded
grant_type=device&
client_id=3MVG9PhR6g6B7ps7TTI4cP7Mppg3l7tu.MRAYULyVqcmA9hGLpHiiS.Q7rO9yjlmffiBUM6tFpYAlXEkRjHb9&code=M01WRzlQaFI2ZzZCN3BzN1RUSTRjUDdNcHBnM2w3dHUuTVJBWVVMeVZxY21BOWhHTHBIaWlTLlE3ck85eWpsbWZmaUJVTTZ0RnBZQWxYRWtSakhiOTsxMC4yMi4zNC45MjsxNDc3Njc0NDg3NTA1O1gxRDlTRUVULa requête d'interrogation contient les paramètres ci-dessous, en plus de l'en-tête.
| Paramètre | Description |
|---|---|
grant_type
|
La valeur doit être device pour ce flux. |
client_id
|
La clé consommateur de l'application cliente externe. Pour accéder à la clé consommateur, dans le Gestionnaire d'application cliente externe, recherchez l'application cliente externe, puis sélectionnez Modifier les paramètres dans la liste déroulante. Agrandissez ensuite la section Paramètres OAuth, puis cliquez sur Clé et secret consommateur. Vous pouvez être invité à confirmer votre identité avant d'être autorisé à afficher la clé consommateur. |
code
|
Le serveur d'autorisation crée un code d'autorisation, un jeton éphémère, et le transmet au client une fois l'authentification réussie. Le client envoie le code d'autorisation au serveur d'autorisation pour obtenir le jeton d'accès et éventuellement un jeton d'actualisation. |
Salesforce accorde un jeton d'accès
Si l'utilisateur a autorisé, la réponse de Salesforce contient un message de succès et renvoie le jeton d'accès avec d'autres valeurs. Par exemple :
{
"access_token": "00DD00000008Uw2!ARkAQGppKf6n.VwG.EnFSvi731qWh.7vKfaJjL7h49yutIC84gAsxMrqcE81GjpTjQbDLkytl2ZwosNbIJwUS0X8ahiILj3e"
"refresh_token": "your token here"
"signature": "hJuYICd2IHsjyTcFqTYiOr8THmgDmrcjgWaMp13X6dY="
"scope": "api"
"instance_url": "https://yourInstance.salesforce.com"
"id": "https://login.salesforce.com/id/00DD00000008Uw2MAE/005D0000001cAGmIAM"
"token_type": "Bearer"
"issued_at": "1477674717112"
}Les paramètres ci-dessous sont inclus dans l'exemple de réponse.
| Paramètre | Description |
|---|---|
access_token
|
Le jeton OAuth utilisé par une application cliente externe 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
|
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 cliente externe est configurée avec une étendue refresh_token. |
signature
|
La signature HMAC-SHA256 codée en Base64 signée par le client_secret. La signature peut inclure l'ID concaténé et issued_at value, que vous pouvez utiliser pour vérifier que l'URL d'identité n'a pas changé depuis que le serveur l'a envoyé. |
scope
|
Les étendues associées au jeton d'accès. Les étendues définissent les types de ressource protégée auxquels le client peut accéder. Vous attribuez des étendues à une application cliente externe lors de son élaboration, et elles sont incluses avec les jetons OAuth pendant le flux d'autorisation. Pour les paramètres valides, consultez Étendues OAuth. |
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é. |
token_type
|
Un type de jeton Bearer, utilisé pour toutes les réponses qui incluent un jeton d'accès. |
issued_at
|
Horodatage indiquant à quel moment la signature a été créée, en millisecondes. |

