Passa ai contenuti principali

OAuth2 per autorizzare accesso a Rest/API interne ed esterne

OAuth2 per autorizzare accesso a Rest/API interne ed esterne

Introduzione

Quello che si vuole ottenere è l'uso dell'autenticazione OAuth2 per validare le richieste interne ad una web app a microservizi e le richieste da parte di uno o più di questi microservizi verso servizi API esterni, nello specifico l'uso della posta di Google.

Il meccanismo è lo stesso che consente l'autenticazione mediante account di terzi.

Validazione interna


In (1) il client web "prova" ad invocare un servizio Rest/API protetto e riceve un HTTP error 400.
In (2) il client web chiede un token d'accesso ad un servizio OAuth di autenticazione interno, in (3) lo riceve, in (4) usa tale token per invocare il Rest/API ed in (5) riceve la risposta con i dati.

Validazione esterna

Quello che ora si vuole ottenere è che una applicazione web si autentichi verso le API di Google per poter usare i servizi di questa, come ad esempio l'invio mail.

Questa pratica viene detta, da Google, autenticazione "OAuth da server a server". Il diagramma è il seguente:



Per poter eseguire questo meccanismo è necessario:

1) Creare un account di servizio su Google

2) Generare un Token Web Json (JWT)

3) Richiedere un token di accesso a Google

4) Usare questo token per fare le chiamate allo specifico servizio API di Google che si intende utilizzare.

1) Creare un account di servizio su Google

Puntare la pagina per i servizi di Google. Selezionare un progetto o crearne uno nuovo.

Selezionare la voce "+ CREA ACCOUNT DI SERVIZIO" e nella scheda di dettaglio inserisci un nome per l'account di servizio, un ID e una descrizione e dopo cliccare su "Crea".

Nella fase successiva si può specificare, facoltativamente, se assegnare un ruolo nel progetto allo specifico account di servizio che si sta creando, lasciamolo vuoto.

Cliccando su fine si ottiene la generazione di questo account di servizio che verrà rappresentato un una griglia con tutti gli altri eventualmente generati:


2) Ceazione di una chiave privata


Cliccando sui tre puntini verticali, che ho evidenziato in giallo nella figura precedente, si deve selezionare la voce dal menu "Crea chiave", scegliere il formato JSON. Si otterrà il download di una chiave in formato JSON che avrà questo contenuto:


L'elemento che ci interessa è "private_key_id", quella è la chiave privata che ci serve per firmare il JWT.


3) Abilitare il servizio

Tornare al menu generale e selezionare "API e servizi" > "Dashboard" e poi, dalla voce di menu superiore "+ABILITA API E SERVIZI":



Si aprirà un "catalogo" di API, selezionare quella desiderata, nel mio caso "Gmail API" e selezionare "Abilita".

Si viene portati in un menù contestuale nel quale nella voce "Credenziali" è elencata la chiave che abbiamo creato con l'account di servizio prima:

Cliccando sulla voce "Attiva" in alto a destra si attiva il servizio che è riservato agli account G Suite.


Fonte: https://www.soliantconsulting.com/blog/google-oauth-2-service-account/



Licenza Creative Commons

Commenti

Post popolari in questo blog

Telecamere Ip con accesso "nascosto"

Telecamere Ip con accesso "nascosto" Storia triste di un auto-hacking obbligato che mi ha fatto scoprire come la nostra privacy è realmente messa a rischi. Storia Ho acquistato dal mercatino/fiera del Radioamatore di Fasano quattro telecamere IP. La scatola riporta "Smart Camera" LF4810. Ne ho montata una e testata in tutte le sue funzionalità per oltre un mese. Chiaramente la manualistica scarsissima, come da tradizione in questi prodotti cinesi di costo molto concorrenziale, consiste in un "pieghevole" di 4 facciate. Chiaramente non erano documentate le impostazioni necessarie per attivare i protocolli ONVIF e RTSP che mi sono indispensabili per l'uso che ne devo fare. Nonostante questa scarsa documentazione dopo l'installazione base fatta con l'apposita app: tutto sembrava corretto. Chiaramente la prima azione che ho compiuto è stata quella di cambiare la password che di default è "123". Subito dopo h

Alzatapparella con Shelly 2 e Alexa

Alzatapparella con Shelly 2 e Alexa Qui spiego tutti i passaggi per installare lo Shelly 2 per automatizzare una tapparella e come configurarlo in Alexa. Impianto attuale Collegamenti da effettuare: Schema teorico: Collegamenti reali: Impostazioni: Dopo aver collegato tutto si procede alla configurazione. Prima di tutto installare la App "Shelly" cercandola nel proprio store e create un account: Il dispositivo verrà visto come doppio interruttore. Andare sulla "i" "Impostazioni": Nella sezione "MODO" ed impostare "Roller Shutter" Poi su "APRI/CHIUDI TEMPO DI LAVORO" ed impostare tipo 20 secondi. Altro passaggio importante in caso di tapparelle è quello relativo alla calibrazione (schermata relativa a "Shelly 2.5"). Se si omette questo passaggio non sarà possibile vedere in che stato è (aperta/chiusa

UPS Monitor via USB

Collegamenti Ho collegato l'UPS Mustek PowerMust 800 mediante il cavo USB al server con Ubuntu Linux 18.04. Software Ho installato: $ sudo apt-get install nut nut-cgi Configurazione Ho impostato i permessi di accesso: $ sudo chown root:nut /etc/nut/* $ sudo chown 640 /etc/nut/* Ho impostato nel file ups.conf (il file di configurazione del servizio) [mustek] driver = blazer_usb port = auto desc = "Musteck Power 800 usb" Ho impostato nel file upsd.conf (il file di configurazione del demone del servizio) LISTEN 127.0.0.1 3493 ACL all 0.0.0.0/0 ACL localhost 127.0.0.1/32 ACCEPT localhost REJECT all Ho impostato nel file upsd.users (il file di configurazione degli utenti del servizio) [mustek] password = 123456 allowfrom = localhost upsmon master Ho impostato nel file upsmon.conf (il file di configurazione del servizio di monitoraggio) MONITOR mustek@localhost 1 local_mon 123456 master Ho abilitato il servizio di moni