.. |br| raw:: html
.. _howto_oauth: OAuth ----- GovWay permette di proteggere le erogazioni e/o fruizioni di API tramite il protocollo *OAuth2*. Una API può essere configurata in modo che ogni sua invocazione debba essere accompagnata da un *access token* valido rilasciato da uno degli *Authorization Server* censiti. La :numref:`quick_oauth_fig` mette in evidenza tutte le comunicazioni e gli attori coinvolti per riuscire a porta a termine l'invocazione dello scenario descritto nella sezione ? dove però l'api viene protetta tramite *OAuth*. 1. *Acquisizione Access Token* Un client deve richiedere un *access token* direttamente all'\ *Authorization Server* secondo le modalità supportate. In OAuth esistono diverse modalità alcune delle quali richiedono anche il coinvolgimento dell'utente al quale verrà richiesto di autenticarsi e poi di autorizzare le operazioni che il client intende eseguire. (`RFC 6749 `__) 2. *Richiesta di servizio con Access Token* Un client ottenuto l'\ *access token* deve spenderlo all'interno della richiesta inoltrata a GovWay già descritta nella sezione :ref:`erogazioneREST`. Un *access token* può essere incluso nella richiesta tramite diverse modalità definite dalla specifica `RFC 6750 `__. Nello scenario di esempio è stato utilizzato l'header http *Authorization* utilizzando la modalità *Bearer*. 3. *Validazione Access Token* GovWay verifica che la richiesta contenga un *access token* valido. Per effettuare tale validazione GovWay supporta differenti modalità: - *Servizio di Introspection*: se l'\ *access token* è '*opaco*\ ' l'unica maniera per validarlo è accedere al servizio di introspection che deve essere disponibile sull'\ *Authorization Server*. Tale servizio viene definito dalla specifica `RFC 7662 `__ - *Validazione JWT*: se l'\ *access token* è un token '*JWT*\ ' (`RFC 7519 `__) GovWay può essere configurato per validarlo secondo la specifica JWS (`RFC 7515 `__) o JWE (`RFC 7516 `__). direttamente sul gateway senza accedere ad alcun servizio remoto. 4. *Forward Claims dell'Access Token* Effettuata la validazione dell'\ *access token* GovWay può fornire all'applicativo erogatore le varie informazioni acquisite durante la validazione del token, ad esempio sotto forma di header http. .. figure:: ../_figure_howto/oauth_scenario.png :scale: 80% :align: center :name: quick_oauth_fig Scenario OAuth Come si evince dalla :numref:`quick_oauth_fig` la creazione del token non è gestita da GovWay, ma da un qualunque Authorization Server esterno. GovWay è preconfigurato per poter utilizzare Google come Authorization Server nell'installazione di base e quindi un applicativo può ottenere il token da Google e poi spenderlo all'interno delle richieste applicative spedite verso GovWay. Lo scenario istanziato su Google sarà utilizzato in tutte le successive sotto-sezioni per descrivere tutte le funzionalità inerenti *OAuth2* attivabili su GovWay. .. note:: **Requisito account gmail** |br| Per provare gli scenari descritti nelle successive sotto-sezioni è necessario avere un account su gmail. .. toctree:: :maxdepth: 2 introspection validazioneJWT autenticazione scope claims xacml tokenForward registrazioneAuthServer