Zum Hauptinhalt springen

3.1. Device Authorization Request (Geräteautorisierungsanfrage)

Diese Spezifikation definiert einen neuen OAuth-Endpunkt: den Geräteautorisierungsendpunkt (device authorization endpoint). Dieser ist getrennt vom OAuth-Autorisierungsendpunkt, der in [RFC6749] definiert ist und mit dem der Benutzer über einen Benutzeragenten (d.h. einen Browser) interagiert. Im Vergleich dazu interagiert bei Verwendung des Geräteautorisierungsendpunkts der OAuth-Client auf dem Gerät direkt mit dem Autorisierungsserver, ohne die Anfrage in einem Benutzeragenten darzustellen, und der Endbenutzer autorisiert die Anfrage auf einem separaten Gerät. Diese Interaktion ist wie folgt definiert.

Der Client initiiert den Autorisierungsablauf, indem er einen Satz von Verifizierungscodes vom Autorisierungsserver anfordert, indem er eine HTTP-"POST"-Anfrage an den Geräteautorisierungsendpunkt stellt.

Der Client stellt eine Geräteautorisierungsanfrage an den Geräteautorisierungsendpunkt, indem er die folgenden Parameter im Format "application/x-www-form-urlencoded" gemäß Anhang B von [RFC6749] mit einer Zeichenkodierung von UTF-8 im HTTP-Anfrage-Entitätskörper einschließt:

client_id (Client-Identifikator)

  • ERFORDERLICH, wenn der Client sich nicht beim Autorisierungsserver authentifiziert, wie in Abschnitt 3.2.1. von [RFC6749] beschrieben.
  • Der Client-Identifikator, wie in Abschnitt 2.2 von [RFC6749] beschrieben.

scope (Bereich)

  • OPTIONAL. Der Bereich der Zugriffsanfrage, wie in Abschnitt 3.3 von [RFC6749] definiert.

Zum Beispiel stellt der Client die folgende HTTPS-Anfrage:

POST /device_authorization HTTP/1.1
Host: server.example.com
Content-Type: application/x-www-form-urlencoded

client_id=1406020730&scope=example_scope

Alle Anfragen vom Gerät MÜSSEN das Transport Layer Security (TLS) Protokoll [RFC8446] verwenden und die Best Practices von BCP 195 [RFC7525] implementieren.

Parameter, die ohne Wert gesendet werden, MÜSSEN so behandelt werden, als wären sie aus der Anfrage weggelassen worden. Der Autorisierungsserver MUSS nicht erkannte Anfrageparameter ignorieren. Anfrage- und Antwortparameter DÜRFEN NICHT mehr als einmal enthalten sein.

Die Client-Authentifizierungsanforderungen von Abschnitt 3.2.1 von [RFC6749] gelten für Anfragen an diesem Endpunkt, was bedeutet, dass vertrauliche Clients (solche, die Client-Anmeldeinformationen eingerichtet haben) sich auf die gleiche Weise authentifizieren wie bei Anfragen an den Token-Endpunkt, und öffentliche Clients den "client_id"-Parameter bereitstellen, um sich zu identifizieren.

Aufgrund der Polling-Natur dieses Protokolls (wie in Abschnitt 3.4 angegeben) ist Vorsicht geboten, um eine Überlastung der Kapazität des Token-Endpunkts zu vermeiden. Um unnötige Anfragen an den Token-Endpunkt zu vermeiden, SOLLTE der Client eine Geräteautorisierungsanfrage nur beginnen, wenn er vom Benutzer dazu aufgefordert wird, und nicht automatisch, z.B. wenn die App startet oder wenn die vorherige Autorisierungssitzung abläuft oder fehlschlägt.