32
9 Settembre 2016

Client authentication and authorization

Embed Size (px)

Citation preview

Page 1: Client authentication and authorization

9 Settembre 2016

Page 2: Client authentication and authorization

9 Settembre 2016

Client authentication and authorizationMaurizio [email protected]@bugman79

Page 3: Client authentication and authorization

9 Settembre 2016

Autenticazione & AutorizzazioneAutenticazione

CHI SEI? SEI QUELLO CHE DICI DI ESSERE?Il processo di identificazione di un individuo, tipicamente basato sull’immissione di un username e di una password.

AutorizzazioneCOSA PUOI FARE?

Presuppone l’autenticazione!Si può implementare tramite ACL (Access Control List)

Page 4: Client authentication and authorization

9 Settembre 2016

Un po' di storia

Page 5: Client authentication and authorization

9 Settembre 2016

HTTP Basic Authentication• Gestione del browser• No cookie• Non è possibile personalizzare il

form di richiesta• Poco sicura (credenziali trasmesse

in base64)

Page 6: Client authentication and authorization

9 Settembre 2016

Form-Based Authentication• Gestione lato backend• Richiesta sessione (cookie,..)• Poco sicura (credenziali

trasmesse in chiaro)

• Usare TLS/SSL aumenta la sicurezza dei 2 metodi!!!

Page 7: Client authentication and authorization

9 Settembre 2016

OpenID• Nascono tanti servizi diversi di

autenticazione…

• OpenID• Usare un unico accesso per

diversi servizi• Standard per l’autenticazione• No creazione altri account• Uso di un Identity Provider

Page 8: Client authentication and authorization

9 Settembre 2016

OAuth• OpenID non gestisce le

autorizzazioni…

• OAuth• Standard per l’autorizzazione• access_token con validità

temporanea per uno scope• Versione in uso OAuth 2.0

Page 9: Client authentication and authorization

9 Settembre 2016

Come gestire l’autorizzazione

Page 10: Client authentication and authorization

9 Settembre 2016

Gestione proprietariaPRO• Dati in “nostro” possesso (privacy)

CONTRO• Registrazione utenti a carico “nostro”• Altro account da ricordare per l’utente• Sviluppo e manutenzione di una soluzione completa

(sign-in, login, logout, analytics, reset password, etc)

Page 11: Client authentication and authorization

9 Settembre 2016

Gestione tramite Identity Provider (IDP)PRO• Nessun nuovo account per l’utente• Accesso ad altri dati accessori (email, foto profilo, lista amici)• Sviluppo della sola login (registrazione ed altro a carico dell’IDP)

CONTRO• Dati “in mano” agli IDP

Page 12: Client authentication and authorization

9 Settembre 2016

Usare un Identity Provider• Scegliere un IDP • Facebook, Microsoft, Google, Twitter, Azure AD…

• Configurare IDP (per ottenere in genere un app ID ed un secret)

• Implementare l’autenticazione su client• tramite SDK dell’IDP• usando OAuth• usando un servizio PAAS di appoggio (es. Parse, Azure Mobile App)

Page 13: Client authentication and authorization

9 Settembre 2016

Uso di OAuth• Facile da implementare• Richiesta configurazione sull’IDP• Di solito l’autenticazione avviene tramite pagina web• Una volta fatto l’accesso è possibile utilizzare anche i servizi API esposti

dall’IDP (es. richiedere lista amici o dati sull’utenza)

Page 14: Client authentication and authorization

9 Settembre 2016

Flusso OAuth

Page 15: Client authentication and authorization

9 Settembre 2016

Alcuni IDP che supportano OAuth

Maurizio Moriconi
https://auth0.com/docs/identityproviders
Page 16: Client authentication and authorization

9 Settembre 2016

Uso di OAuth in Xamarin• Xamarin.Authhttps://components.xamarin.com/view/xamarin.auth

• Auth0https://components.xamarin.com/view/Auth0Client

Page 17: Client authentication and authorization

9 Settembre 2016

DemoXamarin.Auth

Page 18: Client authentication and authorization

9 Settembre 2016

Uso di Azure Mobile Apps• Identity Provider supportati• Facebook• Google• Microsoft • Twitter• Azure AD

• Possibilità di restringere l’accesso delle tabelle solo agli utenti autenticati

Page 19: Client authentication and authorization

9 Settembre 2016

Configurazione di Azure• Creare un nuovo App Service

sul portale• Abilitare l’autenticazione• Configurare uno o più IDP

Page 20: Client authentication and authorization

9 Settembre 2016

Esempio configurazione Facebook

Page 21: Client authentication and authorization

9 Settembre 2016

Sviluppo in Xamarin• Azure Mobile Client SDKhttps://components.xamarin.com/view/azure-mobile-client

• Piattaforme supportate• Xamarin.iOS• Xamarin.Android• Xamarin.Forms

Page 22: Client authentication and authorization

9 Settembre 2016

Vantaggi rispetto ad Xamarin.Auth• Dati IDP su server (nessuna configurazione lato client)• Supporto alla piattaforma Windows• Più aggiornato• Monitoraggio avanzato (Azure)• “Aggancio” con gestione dei dati e dei servizi API di Azure• Possibilità di usare API degli IDP anche lato server (node.js o .NET)

Page 23: Client authentication and authorization

9 Settembre 2016

DemoAzure Mobile Client

Page 24: Client authentication and authorization

9 Settembre 2016

Chiamare API degli IDP con Azure Mobile Client• Il token restituito non è l’access token degli IDP!!!• Va fatta un’implementazione server per poter recuperare l’access token• E’ possibile farla sia in .NET che in node.js• Esempio del recupero access token in node.js

Page 25: Client authentication and authorization

9 Settembre 2016

Esempio chiamata API IDP da node.js

Page 26: Client authentication and authorization

9 Settembre 2016

Gestire le autorizzazioni• A livello di dati

Page 27: Client authentication and authorization

9 Settembre 2016

Gestire le autorizzazioni• A livello di API

Page 28: Client authentication and authorization

9 Settembre 2016

Altre soluzioni…

Page 29: Client authentication and authorization

9 Settembre 2016

Azure Active Directory B2C• Supporta autenticazione tramite IDP• Supporta autenticazione “proprietaria” (utenti senza social)• Possibilità avanzate:• Password reset • 2FA

https://blog.xamarin.com/authenticating-mobile-apps-with-azure-active-directory-b2c/

Page 30: Client authentication and authorization

9 Settembre 2016

Passport

Page 31: Client authentication and authorization

9 Settembre 2016

Passport Features

Page 32: Client authentication and authorization

9 Settembre 2016

Question time