Client authentication and authorization

Post on 16-Apr-2017

141 views 2 download

Transcript of Client authentication and authorization

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

Maurizio Moriconi
https://auth0.com/docs/identityproviders

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