Passa al contenuto principale

3.1. Device Authorization Request (Richiesta di autorizzazione del dispositivo)

Questa specifica definisce un nuovo endpoint OAuth: l'endpoint di autorizzazione del dispositivo (device authorization endpoint). Questo è separato dall'endpoint di autorizzazione OAuth definito in [RFC6749] con cui l'utente interagisce tramite un agente utente (cioè un browser). In confronto, quando si utilizza l'endpoint di autorizzazione del dispositivo, il client OAuth sul dispositivo interagisce direttamente con il server di autorizzazione senza presentare la richiesta in un agente utente, e l'utente finale autorizza la richiesta su un dispositivo separato. Questa interazione è definita come segue.

Il client avvia il flusso di autorizzazione richiedendo un set di codici di verifica dal server di autorizzazione effettuando una richiesta HTTP "POST" all'endpoint di autorizzazione del dispositivo.

Il client effettua una richiesta di autorizzazione del dispositivo all'endpoint di autorizzazione del dispositivo includendo i seguenti parametri utilizzando il formato "application/x-www-form-urlencoded", secondo l'Appendice B di [RFC6749], con una codifica dei caratteri UTF-8 nel corpo dell'entità della richiesta HTTP:

client_id (identificatore client)

  • RICHIESTO se il client non si sta autenticando con il server di autorizzazione come descritto nella Sezione 3.2.1. di [RFC6749].
  • L'identificatore client come descritto nella Sezione 2.2 di [RFC6749].

scope (ambito)

  • OPZIONALE. L'ambito della richiesta di accesso come definito dalla Sezione 3.3 di [RFC6749].

Ad esempio, il client effettua la seguente richiesta HTTPS:

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

client_id=1406020730&scope=example_scope

Tutte le richieste dal dispositivo DEVONO utilizzare il protocollo Transport Layer Security (TLS) [RFC8446] e implementare le migliori pratiche di BCP 195 [RFC7525].

I parametri inviati senza un valore DEVONO essere trattati come se fossero stati omessi dalla richiesta. Il server di autorizzazione DEVE ignorare i parametri di richiesta non riconosciuti. I parametri di richiesta e risposta NON DEVONO essere inclusi più di una volta.

I requisiti di autenticazione del client della Sezione 3.2.1 di [RFC6749] si applicano alle richieste su questo endpoint, il che significa che i client confidenziali (quelli che hanno stabilito credenziali client) si autenticano allo stesso modo di quando effettuano richieste all'endpoint token, e i client pubblici forniscono il parametro "client_id" per identificarsi.

A causa della natura di polling di questo protocollo (come specificato nella Sezione 3.4), è necessaria attenzione per evitare di sovraccaricare la capacità dell'endpoint token. Per evitare richieste non necessarie all'endpoint token, il client DOVREBBE iniziare una richiesta di autorizzazione del dispositivo solo quando richiesto dall'utente e non automaticamente, ad esempio quando l'app si avvia o quando la sessione di autorizzazione precedente scade o fallisce.