Ce tutoriel vous aidera à appeler votre propre API à partir d’un appareil à saisie limitée à l’aide du flux d’autorisation d’appareil. Si vous voulez comprendre comment ce flux fonctionne et pourquoi vous devriez l’utiliser, consultez flux d’autorisation d’appareil.
- Authentication API : poursuivez votre lecture pour apprendre à appeler notre API directement. Pour une expérience interactive, consultez Device Flow Playground.
Prérequis
- Vérifiez les limites (ci-dessous) afin de vous assurer que le Device Authorization Flow convient à votre mise en œuvre.
-
Enregistrez l’application auprès d’Auth0.
- Sélectionnez Native comme Type d’application.
- Au besoin, définissez les Origines Web autorisées. Vous pouvez l’utiliser pour autoriser localhost comme origine en développement local, ou pour définir une origine autorisée pour un logiciel de téléviseur précis dont l’architecture est soumise à CORS (p. ex., HTML5 + JS). La plupart des applications n’utiliseront pas ce paramètre.
- Assurez-vous que la bascule OIDC Conformant est activée. Ce paramètre se trouve dans le Dashboard, sous Applications > Application > Advanced Settings > OAuth.
- Assurez-vous que les Types d’octroi de l’application comprennent Device Code. Pour savoir comment faire, consultez Mettre à jour les type d’octroi.
- Si vous voulez que votre application puisse utiliser des jetons d’actualisation, assurez-vous que ses Types d’octroi comprennent jeton d’actualisation. Pour savoir comment faire, consultez Mettre à jour les type d’octroi. Pour en savoir plus sur les jetons d’actualisation, consultez jetons d’actualisation.
- Configurez et activez au moins une connection pour l’application : Database connections, Social connections
-
Enregistrez votre API auprès d’Auth0
- Si vous voulez que votre API reçoive des jetons d’actualisation afin de pouvoir obtenir de nouveaux jetons lorsque les précédents expirent, activez Allow Offline Access. Pour en savoir plus sur les jetons d’actualisation, consultez jetons d’actualisation.
- Configurez les paramètres du user code de l’appareil pour définir le jeu de caractères, le format et la longueur de votre user code généré aléatoirement.
Étapes
- Demander un code d’appareil (flux de l’appareil) : Demandez un code d’appareil que l’utilisateur pourra utiliser pour autoriser l’appareil.
- Demander l’activation de l’appareil (flux de l’appareil) : Demandez à l’utilisateur d’autoriser l’appareil à l’aide de son ordinateur portable ou de son téléphone intelligent.
- Demander des jetons (flux de l’appareil) : Interrogez le point de terminaison des jetons pour demander un jeton.
- Autoriser l’utilisateur (flux du navigateur) : L’utilisateur autorise l’appareil afin que celui-ci puisse recevoir des jetons.
- Recevoir des jetons (flux de l’appareil) : Une fois que l’utilisateur a autorisé l’appareil avec succès, recevez les jetons.
- Appeler l’API (flux de l’appareil) : Utilisez le jeton d’accès récupéré pour appeler votre API.
- Actualiser les jetons (flux de l’appareil) : Utilisez un jeton d’actualisation pour demander de nouveaux jetons lorsque les jetons existants expirent.
Demander un code d’appareil
Exemple de requête POST à l’URL du code d’appareil
Paramètres du code d’appareil
- devez inclure un paramètre
- pouvez inclure des scopes supplémentaires pris en charge par l’API cible
Si votre application veut seulement un jeton d’accès pour récupérer des informations sur l’utilisateur authentifié, aucun paramètre audience n’est requis.
Réponse de code d’appareil
HTTP 200 dont la charge utile contient device_code, user_code, verification_uri ainsi que les valeurs expires_in, interval et verification_uri_complete :
device_codeest le code unique de l’appareil. Lorsque l’utilisateur accède àverification_uridepuis son navigateur sur l’appareil, ce code est associé à sa session.user_codecontient le code qui doit être saisi àverification_uripour autoriser l’appareil.verification_uricontient l’URL que l’utilisateur doit ouvrir pour autoriser l’appareil.verification_uri_completecontient l’URL complète que l’utilisateur doit ouvrir pour autoriser l’appareil. Cela permet à votre application d’inclure leuser_codedans l’URL, si vous le souhaitez.expires_inindique la durée de validité (en secondes) dudevice_codeet duuser_code.intervalindique l’intervalle (en secondes) auquel l’application doit interroger l’URL du jeton pour demander un jeton.
Vous pouvez configurer le jeu de caractères, le format et la longueur de votre code utilisateur généré aléatoirement dans les paramètres de votre tenant.Pour prévenir les attaques par force brute, nous appliquons les limites suivantes à
user_code :Longueur minimale :- Lettres BASE20 : 8 caractères
- Chiffres : 9 caractères
- 20 caractères (y compris les traits d’union et les espaces, qui peuvent être ajoutés comme séparateurs pour en faciliter la lecture)
- 15 minutes
Demander l’activation de l’appareil
device_code et un user_code, vous devez demander à l’utilisateur de se rendre à l’verification_uri sur son ordinateur portable ou son téléphone, puis d’entrer le user_code :

device_code n’est pas destiné directement à l’utilisateur et ne devrait pas être affiché pendant l’interaction afin d’éviter toute confusion.
Si vous créez un CLI, vous pouvez ignorer cette étape et ouvrir immédiatement le navigateur avec
verification_uri_complete.Demander des jetons
interval) à l’étape précédente, vous devrez envoyer une requête POST à l’URL de jeton avec le device_code.
Pour éviter les erreurs dues à la latence du réseau, vous devriez commencer à compter chaque intervalle après avoir reçu la réponse à la dernière requête de polling.
Exemple de requête POST à l’URL du jeton
Paramètres de la demande de jeton
Réponses de jeton
HTTP 4xx différentes :
Vous verrez cette erreur en attendant que l’utilisateur passe à l’action. Continuez à interroger le point de terminaison selon l’intervalle suggéré obtenu à l’étape précédente de ce tutoriel.
Ralentissez
Jeton expiré
device_code a expiré. Votre application doit informer l’utilisateur que le flux a expiré et lui demander de le relancer.
Accès refusé
- l’utilisateur a refusé d’autoriser l’appareil
- le a refusé la transaction
- une règle configurée a refusé l’accès (Pour en savoir plus, consultez Auth0 Rules.)


- Authentification de l’utilisateur ;
- Redirection de l’utilisateur vers un pour effectuer l’authentification ;
- Vérification des sessions actives ;
- Obtention du consentement de l’utilisateur pour l’appareil, sauf si ce consentement a déjà été accordé.


Recevoir des jetons
HTTP 200 avec une charge utile contenant les valeurs access_token, refresh_token (facultatif), id_token (facultatif), token_type et expires_in :
/userinfo de l’API d’authentification Auth0 ou une autre API. (Pour en savoir plus sur les jetons d’accès, consultez Jetons d’accès.) Vous ne pourrez utiliser le jeton d’accès pour appeler /userinfo que si vous avez inclus la portée openid. Si vous appelez votre propre API, la première chose qu’elle devra faire sera de vérifier le jeton d’accès.
contiennent des renseignements sur l’utilisateur qui doivent être décodés et extraits. (Pour en savoir plus sur les jetons d’identité, consultez Jetons d’identité.) Le id_token ne sera présent dans la réponse que si vous avez inclus la portée openid.
servent à obtenir un nouveau jeton d’accès ou un nouveau jeton d’identité après l’expiration du précédent. (Pour en savoir plus sur les jetons d’actualisation, consultez Jetons d’actualisation.) Le refresh_token ne sera présent dans la réponse que si vous avez inclus la portée offline_access et activé Autoriser l’accès hors ligne pour votre API dans le Dashboard.
Effectuer une requête à votre API
Jetons d’actualisation
- configuré votre API pour autoriser l’accès hors ligne
- inclus la portée
offline_accesslorsque vous avez lancé la requête d’authentification par l’intermédiaire du point de terminaison authorize
POST au point de terminaison /oauth/token dans l’Authentication API, en utilisant grant_type=refresh_token.
Exemple de requête POST de jeton d’actualisation à l’URL de jeton
Paramètres de la requête de jeton d’actualisation
Réponse du jeton d’actualisation
HTTP 200 avec une charge utile qui contient un nouvel access_token, un id_token (facultatif), la durée de validité du jeton en secondes (expires_in), les valeurs scope accordées et token_type :
Exemples de scénarios d’utilisation
protocol de l’objet context :
Exemples de mises en œuvre
- Device Authorization Playground
- AppleTV (Swift): Une application simple qui montre comment utiliser Auth0 avec le flux d’autorisation d’appareil sur une Apple TV.
- CLI (Node.js): Exemple de mise en œuvre d’un CLI qui utilise le flux d’autorisation d’appareil plutôt que le flux de code d’autorisation. La principale différence, c’est que votre CLI n’a pas besoin d’héberger un serveur Web ni d’écouter sur un port.
Dépannage
Codes d’erreur
Limitations
- Prendre en charge l’indication du nom de serveur (SNI) lorsque des domaines personnalisés sont utilisés
- Avoir un type d’application Auth0 Native
- Avoir la méthode d’authentification du Token Endpoint réglée sur None
- Être conformes à OIDC
- Ne pas avoir été créés au moyen de l’enregistrement dynamique des clients
- Les connexions sociales utilisant des clés de développeur Auth0, sauf si vous utilisez l’expérience Universal Login
- D’accéder aux paramètres de chaîne de requête à partir de la page de connexion hébergée, de Rules ou d’Actions
- La liaison de comptes d’utilisateur