Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Client authentication and authorization

166 views

Published on

Descrizione delle possibilità di autenticazione ed autorizzazione usando Xamarin per Client di tipo Mobile

Published in: Mobile
  • Be the first to comment

  • Be the first to like this

Client authentication and authorization

  1. 1. Client authentication and authorization Maurizio Moriconi maurizio.moriconi@mobilesoft.it @bugman79
  2. 2. Autenticazione & Autorizzazione Autenticazione 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. Autorizzazione COSA PUOI FARE? Presuppone l’autenticazione! Si può implementare tramite ACL (Access Control List)
  3. 3. Un po' di storia
  4. 4. HTTP Basic Authentication • Gestione del browser • No cookie • Non è possibile personalizzare il form di richiesta • Poco sicura (credenziali trasmesse in base64)
  5. 5. Form-Based Authentication • Gestione lato backend • Richiesta sessione (cookie,..) • Poco sicura (credenziali trasmesse in chiaro) • Usare TLS/SSL aumenta la sicurezza dei 2 metodi!!!
  6. 6. 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
  7. 7. 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
  8. 8. Come gestire l’autorizzazione
  9. 9. Gestione proprietaria PRO • 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)
  10. 10. 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
  11. 11. 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)
  12. 12. 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)
  13. 13. Flusso OAuth
  14. 14. Alcuni IDP che supportano OAuth
  15. 15. Uso di OAuth in Xamarin • Xamarin.Auth https://components.xamarin.com/view/xamarin.auth • Auth0 https://components.xamarin.com/view/Auth0Client
  16. 16. Demo Xamarin.Auth
  17. 17. 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
  18. 18. Configurazione di Azure • Creare un nuovo App Service sul portale • Abilitare l’autenticazione • Configurare uno o più IDP
  19. 19. Esempio configurazione Facebook
  20. 20. Sviluppo in Xamarin • Azure Mobile Client SDK https://components.xamarin.com/view/azure-mobile-client • Piattaforme supportate • Xamarin.iOS • Xamarin.Android • Xamarin.Forms
  21. 21. 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)
  22. 22. Demo Azure Mobile Client
  23. 23. 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
  24. 24. Esempio chiamata API IDP da node.js
  25. 25. Gestire le autorizzazioni • A livello di dati
  26. 26. Gestire le autorizzazioni • A livello di API
  27. 27. Altre soluzioni…
  28. 28. 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/
  29. 29. Passport
  30. 30. Passport Features
  31. 31. Question time

×