Passa al contenuto principale

1. Introduction (Introduzione)

1. Introduction (Introduzione)

La richiesta di autorizzazione in OAuth 2.0 [RFC6749] utilizza la serializzazione dei parametri di query ed è in genere inviata tramite user agent come i browser web.

Ad esempio, i parametri response_type, client_id, state e redirect_uri sono codificati nell'URI della richiesta:

GET /authorize?response_type=code&client_id=s6BhdRkqt3&state=xyz
&redirect_uri=https%3A%2F%2Fclient%2Eexample%2Ecom%2Fcb HTTP/1.1
Host: server.example.com

Pur essendo semplice da implementare, la codifica nell'URI non consente la sicurezza a livello di applicazione per riservatezza e integrità. TLS protegge la comunicazione tra client e user agent e tra user agent e server di autorizzazione, ma le sessioni TLS terminano nell'user agent. Inoltre le sessioni TLS possono terminare prematuramente in un middlebox (ad esempio un bilanciatore di carico).

Pertanto la richiesta di autorizzazione di [RFC6749] presenta carenze:

(a) la comunicazione tramite gli user agent non è protetta in integrità e i parametri possono essere alterati;

(b) l'origine della comunicazione non è autenticata;

(c) la comunicazione tramite gli user agent può essere monitorata.

Per queste debolezze intrinseche sono stati identificati diversi attacchi, come la riscrittura dell'URI di reindirizzamento.

La sicurezza a livello di applicazione mitiga questi problemi.

Consente di preparare le richieste tramite una terza parte fidata in modo che un'applicazione client non possa richiedere più permessi di quanto concordato.

Inoltre il passaggio per riferimento riduce l'overhead sulla rete.

La codifica JWT [RFC7519] è stata scelta per: (1) la vicinanza a JSON, formato di risposta di OAuth; (2) la facilità per gli sviluppatori; (3) la compattezza relativa rispetto a XML; (4) lo stato di Proposed Standard con metodi di firma e cifratura [RFC7515] [RFC7516]; (5) la relativa semplicità di JWS e JWE rispetto a XML Signature e Encryption.

I parametri request e request_uri sono parametri aggiuntivi di richiesta di autorizzazione per i flussi OAuth 2.0 [RFC6749]. Il parametro request è un JSON Web Token (JWT) [RFC7519] il cui JWT Claims Set contiene i parametri codificati in JSON della richiesta di autorizzazione OAuth 2.0. A differenza della RFC 7519, gli elementi del Claims Set sono parametri di richiesta OAuth [IANA.OAuth.Parameters] integrati da pochi JSON Web Token Claims gestiti da IANA [IANA.JWT.Claims], in particolare iss e aud. Il JWT nel parametro request è protetto in integrità e autenticato nell'origine tramite JWS.

Il JWT [RFC7519] può essere passato all'endpoint di autorizzazione per riferimento usando il parametro request_uri al posto di request.

Usare JWT [RFC7519] come codifica della richiesta offre: (a) protezione dell'integrità; (b) autenticazione dell'origine; (c) protezione della riservatezza anche se TLS termina prima degli user agent; (d) minimizzazione della raccolta tramite firma di una terza parte fidata. In alcuni casi si può persino omettere il dialogo di autorizzazione.

Il passaggio per riferimento è utile quando si vuole ridurre la dimensione della richiesta o quando il client non vuole eseguire la crittografia a livello di applicazione.

Questa capacità è usata da OpenID Connect [OpenID.Core].

Vedere 1.1. Requirements Language (Linguaggio dei requisiti).