google auth mechanism emanuel di nardo [email protected] m

16
Google Auth Mechanism Emanuel Di Nardo emanuel.dinardo@gmai l.com

Upload: eloisa-puddu

Post on 02-May-2015

228 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Google Auth Mechanism Emanuel Di Nardo emanuel.dinardo@gmail.co m

Google Auth Mechanism

Emanuel Di Nardoemanuel.dinardo@gmail

.com

Page 2: Google Auth Mechanism Emanuel Di Nardo emanuel.dinardo@gmail.co m

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

OAuth 2.0

Page 4: Google Auth Mechanism Emanuel Di Nardo emanuel.dinardo@gmail.co m

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

• 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

• 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

• 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

• 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

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

• 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

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

• 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

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

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

In sintesi:

Page 16: Google Auth Mechanism Emanuel Di Nardo emanuel.dinardo@gmail.co m

Materiale disponibile al seguente indirizzo:

http://goo.gl/jJzfh

http://students.uniparthenope.it