3.1. Device Authorization Request (Demande d'autorisation d'appareil)
Cette spécification définit un nouveau point de terminaison OAuth: le point de terminaison d'autorisation d'appareil (device authorization endpoint). Celui-ci est séparé du point de terminaison d'autorisation OAuth défini dans [RFC6749] avec lequel l'utilisateur interagit via un agent utilisateur (c'est-à-dire un navigateur). En comparaison, lors de l'utilisation du point de terminaison d'autorisation d'appareil, le client OAuth sur l'appareil interagit directement avec le serveur d'autorisation sans présenter la demande dans un agent utilisateur, et l'utilisateur final autorise la demande sur un appareil séparé. Cette interaction est définie comme suit.
Le client initie le flux d'autorisation en demandant un ensemble de codes de vérification au serveur d'autorisation en effectuant une requête HTTP "POST" au point de terminaison d'autorisation d'appareil.
Le client effectue une demande d'autorisation d'appareil au point de terminaison d'autorisation d'appareil en incluant les paramètres suivants en utilisant le format "application/x-www-form-urlencoded", conformément à l'Annexe B de [RFC6749], avec un encodage de caractères UTF-8 dans le corps de l'entité de la requête HTTP:
client_id (identifiant client)
- REQUIS si le client ne s'authentifie pas auprès du serveur d'autorisation comme décrit dans la Section 3.2.1. de [RFC6749].
- L'identifiant client comme décrit dans la Section 2.2 de [RFC6749].
scope (portée)
- OPTIONNEL. La portée de la demande d'accès telle que définie par la Section 3.3 de [RFC6749].
Par exemple, le client effectue la requête HTTPS suivante:
POST /device_authorization HTTP/1.1
Host: server.example.com
Content-Type: application/x-www-form-urlencoded
client_id=1406020730&scope=example_scope
Toutes les requêtes de l'appareil DOIVENT utiliser le protocole de sécurité de la couche de transport (TLS) [RFC8446] et implémenter les meilleures pratiques de BCP 195 [RFC7525].
Les paramètres envoyés sans valeur DOIVENT être traités comme s'ils avaient été omis de la requête. Le serveur d'autorisation DOIT ignorer les paramètres de requête non reconnus. Les paramètres de requête et de réponse NE DOIVENT PAS être inclus plus d'une fois.
Les exigences d'authentification du client de la Section 3.2.1 de [RFC6749] s'appliquent aux requêtes sur ce point de terminaison, ce qui signifie que les clients confidentiels (ceux qui ont établi des informations d'identification du client) s'authentifient de la même manière que lors de la création de requêtes au point de terminaison de jeton, et les clients publics fournissent le paramètre "client_id" pour s'identifier.
En raison de la nature de sondage de ce protocole (comme spécifié dans la Section 3.4), il faut faire attention à ne pas surcharger la capacité du point de terminaison de jeton. Pour éviter des requêtes inutiles sur le point de terminaison de jeton, le client DEVRAIT uniquement commencer une demande d'autorisation d'appareil lorsqu'il y est invité par l'utilisateur et non automatiquement, par exemple lorsque l'application démarre ou lorsque la session d'autorisation précédente expire ou échoue.