View
141
Download
2
Category
Preview:
Citation preview
9 Settembre 2016
9 Settembre 2016
Client authentication and authorizationMaurizio Moriconimaurizio.moriconi@mobilesoft.it@bugman79
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)
9 Settembre 2016
Un po' di storia
9 Settembre 2016
HTTP Basic Authentication• Gestione del browser• No cookie• Non è possibile personalizzare il
form di richiesta• Poco sicura (credenziali trasmesse
in base64)
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!!!
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
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
9 Settembre 2016
Come gestire l’autorizzazione
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)
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
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)
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)
9 Settembre 2016
Flusso OAuth
9 Settembre 2016
Alcuni IDP che supportano OAuth
9 Settembre 2016
Uso di OAuth in Xamarin• Xamarin.Authhttps://components.xamarin.com/view/xamarin.auth
• Auth0https://components.xamarin.com/view/Auth0Client
9 Settembre 2016
DemoXamarin.Auth
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
9 Settembre 2016
Configurazione di Azure• Creare un nuovo App Service
sul portale• Abilitare l’autenticazione• Configurare uno o più IDP
9 Settembre 2016
Esempio configurazione Facebook
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
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)
9 Settembre 2016
DemoAzure Mobile Client
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
9 Settembre 2016
Esempio chiamata API IDP da node.js
9 Settembre 2016
Gestire le autorizzazioni• A livello di dati
9 Settembre 2016
Gestire le autorizzazioni• A livello di API
9 Settembre 2016
Altre soluzioni…
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/
9 Settembre 2016
Passport
9 Settembre 2016
Passport Features
9 Settembre 2016
Question time
Recommended