google auth mechanism emanuel di nardo [email protected] m
TRANSCRIPT
![Page 1: Google Auth Mechanism Emanuel Di Nardo emanuel.dinardo@gmail.co m](https://reader036.vdocuments.mx/reader036/viewer/2022062404/5542eb73497959361e8da104/html5/thumbnails/1.jpg)
Google Auth Mechanism
Emanuel Di Nardoemanuel.dinardo@gmail
.com
![Page 2: Google Auth Mechanism Emanuel Di Nardo emanuel.dinardo@gmail.co m](https://reader036.vdocuments.mx/reader036/viewer/2022062404/5542eb73497959361e8da104/html5/thumbnails/2.jpg)
Quattro meccanismi di accesso:
1. OAuth 2.0 (Web e Installed)
2. OAuth 1.0 (deprecato)
3. OpenID (Web)
4. Hybrid Protocol (Web)
![Page 3: Google Auth Mechanism Emanuel Di Nardo emanuel.dinardo@gmail.co m](https://reader036.vdocuments.mx/reader036/viewer/2022062404/5542eb73497959361e8da104/html5/thumbnails/3.jpg)
OAuth 2.0
![Page 4: Google Auth Mechanism Emanuel Di Nardo emanuel.dinardo@gmail.co m](https://reader036.vdocuments.mx/reader036/viewer/2022062404/5542eb73497959361e8da104/html5/thumbnails/4.jpg)
Permette l’accesso ad API private
Fornisce sicurezza e protezione per gli utenti
L’applicazione di terze parti non può conoscere i dati inseriti in fase di login
Autenticazione sicura fornita da Google
Utilizzo di token di sicurezza
![Page 5: Google Auth Mechanism Emanuel Di Nardo emanuel.dinardo@gmail.co m](https://reader036.vdocuments.mx/reader036/viewer/2022062404/5542eb73497959361e8da104/html5/thumbnails/5.jpg)
• Utilizzo:
Registrare l’applicazione su Google APIs Console e scegliere i servizi da utilizzare
![Page 6: Google Auth Mechanism Emanuel Di Nardo emanuel.dinardo@gmail.co m](https://reader036.vdocuments.mx/reader036/viewer/2022062404/5542eb73497959361e8da104/html5/thumbnails/6.jpg)
• Generazione OAuth ID
Verranno generate chiavi univoche per l’utilizzo dei servizi
![Page 7: Google Auth Mechanism Emanuel Di Nardo emanuel.dinardo@gmail.co m](https://reader036.vdocuments.mx/reader036/viewer/2022062404/5542eb73497959361e8da104/html5/thumbnails/7.jpg)
• Effettuare il login/autorizzazione tramite il seguente url:
https://accounts.google.com/o/oauth2/auth
Aggiungendo i seguenti parametri con metodo HTTP GET:
![Page 8: Google Auth Mechanism Emanuel Di Nardo emanuel.dinardo@gmail.co m](https://reader036.vdocuments.mx/reader036/viewer/2022062404/5542eb73497959361e8da104/html5/thumbnails/8.jpg)
• Il parametro ‘scope’ definisce a quali informazioni stiamo cercando di accedere:
Lo scope è indicato nella documentazione della risorse a cui si tenta di accedere (calendar/gmail/contacts/ecc...)
Es. informazioni account
Informazioni sull’intero account:
https://www.googleapis.com/auth/userinfo.profile
Informazioni sull’indirizzo email:
https://www.googleapis.com/auth/userinfo.email
Possono essere inseriti entrambi!
![Page 9: Google Auth Mechanism Emanuel Di Nardo emanuel.dinardo@gmail.co m](https://reader036.vdocuments.mx/reader036/viewer/2022062404/5542eb73497959361e8da104/html5/thumbnails/9.jpg)
Gli altri parametri variano in base al tipo di applicazione che stiamo costruendo.
Web server: response_type: code;redirect_uri: specificato nella generazione
dell’OAuth ID;Client-side:
response_type: token;redirect_uri: specificato nella generazione
dell’OAuth ID;Installed app:
reponse_type: code;redirect_uri:
urn:ietf:wg:oauth:2.0:oob: codice restituito nel titolo della pagina html http://localhost: l’applicazione rimane in ascolto su una porta di rete, devono
essere permesse le connessioni in entrata (attenzione ai firewall)
![Page 10: Google Auth Mechanism Emanuel Di Nardo emanuel.dinardo@gmail.co m](https://reader036.vdocuments.mx/reader036/viewer/2022062404/5542eb73497959361e8da104/html5/thumbnails/10.jpg)
• Dopo l’accesso verrà mostrata una finestra di autorizzazione per l’utente
![Page 11: Google Auth Mechanism Emanuel Di Nardo emanuel.dinardo@gmail.co m](https://reader036.vdocuments.mx/reader036/viewer/2022062404/5542eb73497959361e8da104/html5/thumbnails/11.jpg)
Nel caso di response_type: code dovrà essere generata una nuova richiesta per avere il token di accesso:
Richiesta di tipo POST con parametri:
https://accounts.google.com/o/oauth2/token
La risposta sarà un JSON come il seguente:
![Page 12: Google Auth Mechanism Emanuel Di Nardo emanuel.dinardo@gmail.co m](https://reader036.vdocuments.mx/reader036/viewer/2022062404/5542eb73497959361e8da104/html5/thumbnails/12.jpg)
• Per effettuare una richiesta specifica dobbiamo consultare la documentazione della risorsa desiderata.
Vengono utilizzati solitamente i metodi HTTP [GET, POST, DELETE]
Es.:
Richiesta informazioni utente:
https://www.googleapis.com/oauth2/v1/userinfo?access_token=1/fFBGRNJru1FQd44AzqT3Zg
Richiesta Google Calendar:
https://www.googleapis.com/calendar/v3/calendars/calendarId/events/eventId?access_token=1/fFBGRNJru1FQd44AzqT3Zg
![Page 13: Google Auth Mechanism Emanuel Di Nardo emanuel.dinardo@gmail.co m](https://reader036.vdocuments.mx/reader036/viewer/2022062404/5542eb73497959361e8da104/html5/thumbnails/13.jpg)
Alla scadenza del token expires_in dobbiamo richiederne uno nuovo, utilizziamo la chiave refresh_token
Nuova richiesta HTTP POST:
https://accounts.google.com/o/oauth2/token
![Page 14: Google Auth Mechanism Emanuel Di Nardo emanuel.dinardo@gmail.co m](https://reader036.vdocuments.mx/reader036/viewer/2022062404/5542eb73497959361e8da104/html5/thumbnails/14.jpg)
Problema di sicurezza client-side:
I token devono essere validati!
Aggiungere il parametro access_token con il valore appena ricevuto al seguente URL:
https://www.googleapis.com/oauth2/v1/tokeninfo
In risposta avremo un nuovo JSON:
La verifica è valida solo se audience corrisponde al proprio client_id
![Page 15: Google Auth Mechanism Emanuel Di Nardo emanuel.dinardo@gmail.co m](https://reader036.vdocuments.mx/reader036/viewer/2022062404/5542eb73497959361e8da104/html5/thumbnails/15.jpg)
In sintesi:
![Page 16: Google Auth Mechanism Emanuel Di Nardo emanuel.dinardo@gmail.co m](https://reader036.vdocuments.mx/reader036/viewer/2022062404/5542eb73497959361e8da104/html5/thumbnails/16.jpg)
Materiale disponibile al seguente indirizzo:
http://goo.gl/jJzfh
http://students.uniparthenope.it