6. Aggiornamento di un token di accesso (Refreshing an Access Token)
Se il server di autorizzazione (Authorization Server) ha emesso un token di aggiornamento (Refresh Token) al client, il client effettua una richiesta di aggiornamento all'endpoint del token (Token Endpoint) aggiungendo i seguenti parametri utilizzando il formato application/x-www-form-urlencoded secondo l'Appendice B con codifica dei caratteri UTF-8 nel corpo dell'entità della richiesta HTTP.
grant_type
Richiesto (REQUIRED). Il valore deve (MUST) essere impostato su « refresh_token ».
refresh_token
Richiesto (REQUIRED). Il token di aggiornamento emesso al client.
scope
Facoltativo (OPTIONAL). L'ambito della richiesta di accesso come descritto nella sezione 3.3. L'ambito richiesto non deve (MUST NOT) includere alcun ambito non originariamente concesso dal proprietario della risorsa (Resource Owner), e se omesso viene trattato come uguale all'ambito originariamente concesso dal proprietario della risorsa.
Poiché i token di aggiornamento sono in genere credenziali di lunga durata utilizzate per richiedere token di accesso aggiuntivi, il token di aggiornamento è vincolato al client al quale è stato emesso. Se il tipo di client è confidenziale (Confidential) o se al client sono state emesse credenziali del client (o sono stati assegnati altri requisiti di autenticazione), il client deve (MUST) autenticarsi presso il server di autorizzazione come descritto nella sezione 3.2.1.
Ad esempio, il client effettua la seguente richiesta HTTP utilizzando la sicurezza del livello di trasporto (TLS) (con interruzioni di riga aggiuntive solo per scopi di visualizzazione):
POST /token HTTP/1.1
Host: server.example.com
Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW
Content-Type: application/x-www-form-urlencoded
grant_type=refresh_token&refresh_token=tGzv3JOkF0XG5Qx2TlKWIA
Il server di autorizzazione deve (MUST):
- Richiedere l'autenticazione del client per i client confidenziali (Confidential Client) o per qualsiasi client che ha ricevuto credenziali del client (o con altri requisiti di autenticazione)
- Autenticare il client se l'autenticazione del client è inclusa e assicurarsi che il token di aggiornamento sia stato emesso al client autenticato
- Convalidare il token di aggiornamento
Se valido e autorizzato, il server di autorizzazione emette un token di accesso (Access Token) come descritto nella sezione 5.1. Se la richiesta ha fallito la verifica o non è valida, il server di autorizzazione restituisce una risposta di errore come descritto nella sezione 5.2.
Il server di autorizzazione può (MAY) emettere un nuovo token di aggiornamento (Refresh Token), nel qual caso il client deve (MUST) scartare il vecchio token di aggiornamento e sostituirlo con il nuovo token di aggiornamento. Il server di autorizzazione può (MAY) revocare il vecchio token di aggiornamento o conservare il vecchio token di aggiornamento dopo aver emesso un nuovo token di aggiornamento al client. Se viene emesso un nuovo token di aggiornamento, l'ambito del token di aggiornamento deve (MUST) essere identico a quello che il client ha incluso nella richiesta di token di aggiornamento.