SlideShare a Scribd company logo
18 Novembre 2016
Single Sign On con Identity Server
Mauro Servienti
A volte ritornano
ho fatto una sessione simile
la prima volta a
Windows Developer Conference
nel 2012
Mauro Servienti
appassionato di cibo e sport
lo sport è in funzione del cibo
la tecnologia mi annoia
Dicono di me: era un bravo programmatore (cit. Ema)
pretend to be an architect
Coming out
ho un biglietto per i Depeche
e ho appena visto i Cure
Sicurezza, ovunque sicurezza.
Torniamo seri che la sicurezza è importante
…e Trenitalia non sa cosa sia.
Password in chiaro, case insentive. #ciaone
Autenticazione e Autorizzazione
• Autenticazione: verifica che siate chi dite di essere
• Ad esempio tramite una combinazione di Username e Password
• Autorizzazione: verifica che possiate fare quello che cercate di fare
• Ad esempio tramite ruoli e claim
«claim» questi sconosciuti
• Abbiamo sempre pensato in termini di Gruppi/ACL
• .NET ha introdotto nel 2001 i «ruoli»
• Mai decisione fu più nefasta :-)
• Finalmente i «claim» cercano di mettere ordine nel caos
• È semplicemente un attributo dell’utente
• Il nome, lo user-id, la mail, i ruoli, l’età possono essere tutti «claim»
• È compito, come è ovvio che sia, del client decidere come
interpretarlo
Profiles
Claims
Come funziona di solito
Applicazione Backend/FBA
Users
È veramente un problema nostro?
• Date le seguenti «robe»:
• Utenti
• Claim
• Profili
• Ce ne dobbiamo occupare noi?
• No, o meglio non proprio:
• Utenti: no
• Claim: probabilmente in parte
• Profili: si
Perché gli utenti no
• smazzarsi la gestione sicura di username e password è noioso
• Quanti di voi fanno hashing con salt random delle password?
• Quanti di voi hanno il supporto per 2FA?
• Quanti di voi hanno SSL EV?
• Quanti di voi hanno 2FA per il cambio password?
• gli utenti odiano creare un altro utente per usare un servizio
• la privacy è una rottura che non volete gestire
Perché i claim in parte si
• Molti claim comuni a tanti utenti a prescindere
• altri no sono peculiari
• Non è quindi detto che quello che ci troviamo a disposizione basti
Perché i profili si
• Il profilo è un problema totalmente applicativo
• Un «utente», inteso come user, rappresenta l’utente in generale
• Un profilo rappresenta un utente nel contesto applicativo
la federazione
It’s a long way to the top if you wanna rock ‘n’ roll…
La federazione
App Backend/FBA
Trusted
3rd party
STS
Nonèunproblemanostro
Profiles
Claims
Users
nameidentifier
nameidentifier
STS (security token service)
• Non è un problema nostro: ci limitiamo alla fiducia
• Il suo unico ruolo è emettere Security Token
• Tipicamente dopo aver verificato le credenziali, qualsiasi esse siano
• Un Security Token:
• È crittografato e firmato
• La fiducia di cui sopra dice che lo possiamo spacchettare
• Contiene tutte le informazioni relative all’utente
Il flusso federato
• L’utente si presenta e non è autenticato
• L’applicazione lo rimbalza verso l’STS
• Dandogli un token che identifica l’applicazione
• Token che solo l’STS può spacchettare
• L’utente si presenta all’STS con il token
• L’STS a questo punto sa da dove arriva l’utente
• L’utente si autentica con le sue credenziali
• L’STS genera un security token valido e con una scadenza
• L’utente torna dall’applicazione
• L’applicazione spacchetta il security token e sa che l’utente è buono
Applicazione Autorizzazione Applicazione
Autenticazione e
richiesta di accesso
Generazione
del Token
Accesso all’API con il Token
La federazione
App Backend/FBA
Trusted
3rd party
STS
Nonèunproblemanostro
Profiles
Claims
Users
nameidentifier
nameidentifier
Uno solo!?111?1?!!!
Gomblotto :-)
Abbiamo abituato bene i nostri utenti…
Un STS non ci basta più
• Abbiamo bisogno di un ACS
• Access Control Service
• Fa da proxy verso uno o più STS
• Noi ci fidiamo dell’ACS, lui si fida degli STS
• E per proprietà transitiva siamo tutti felici
• Possiamo fare self-hosting dell’ACS
• APS.Net 4 lo faceva
• Possiamo delegare a terze parti come l’IdentityServer di Thinktecture
• Di cui a sua volta si può fare self-hosting
FacebookGoogle Account
La federazione
App Backend
Custom FBA
Profiles
IdentityServer
ACS
Active Directory MS Account
nameidentifier
Nonèunproblemanostro
Twitter
FacebookGoogle Account
Ad ognuno il suo protocollo
Custom FBA
IdentityServer
ACS
Active Directory MS Account Twitter
Applicazione Autorizzazione Applicazione
Autenticazione e
richiesta di accesso
Generazione
del Token
Accesso all’API con il Token
Azure ACS
Autenticazione
Consenso
Codice di Accesso
Codice di Accesso
Ma non è così semplice
Lei e lui
• Gli attori sono due
• Utente
• ApplicazioneUtente Applicazione
STS/ACS
Lei, lui e l’altra
• Gli attori sono tre
• Utente
• Applicazione
• API
• L’utente vuole accedere all’API
• Attraverso l’applicazione
• Una SPA deve funzionare così
• Tipicamente si parla di OAuth
Utente Applicazione
STS/ACS
API
OAuth
Una piccola nota di redazione…
The problem is that OAuth 2.0 is a
Delegated Authorization protocol, and not
a Authentication protocol. ...
OAuth provides an access token to a client, so
that it can access a protected resource, based on
the permission of the resource owner.
Fonte: http://www.thread-safe.com/2012/01/problem-with-oauth-for-authentication.html
Demo
Grazie
Mauro Servienti
Solution Architect @ Particular Software | @mauroservienti | //blogs.ugidotnet.org/topics/

More Related Content

PPTX
SOA, DDD e microservices
PPTX
Pub/Sub Basics
PPTX
Services UI composition
PPTX
Croce e delizia del lavoro remoto
PPTX
THE ROAD TO A SERVICE ORIENTED ARCHITECTURE (SOA)
PPTX
IdentityServer 4
PPTX
TDC2016SP - Unificando a autenticação e controlando acesso a API com Identity...
PPTX
Come ti "pusho" il web con WebSockets: da 0 a SignalR
SOA, DDD e microservices
Pub/Sub Basics
Services UI composition
Croce e delizia del lavoro remoto
THE ROAD TO A SERVICE ORIENTED ARCHITECTURE (SOA)
IdentityServer 4
TDC2016SP - Unificando a autenticação e controlando acesso a API com Identity...
Come ti "pusho" il web con WebSockets: da 0 a SignalR

Viewers also liked (15)

PPTX
NServiceBus - building a distributed system based on a messaging infrastructure
PPTX
Building APIs with MVC 6 and OAuth
PDF
Approccio Pratico al Domain Driven Design
PPTX
Securing your apps with OAuth2 and OpenID Connect - Roland Guijt - Codemotion...
PDF
Angular Rebooted: Components Everywhere
KEY
Ddd brutto sporco e cattivo
PPTX
m-v-vm @ dotNetMarche
PPTX
OAuth2 and IdentityServer3
PPTX
Keep calm and deploy
PPTX
Il cielo è sempre più azure
PPTX
Code metrics
PPTX
On working in Particular
PPTX
Universal app ma universal per davvero
PPTX
There is a bot for that
PDF
Approccio prestazionale antincendio nelle caserme
NServiceBus - building a distributed system based on a messaging infrastructure
Building APIs with MVC 6 and OAuth
Approccio Pratico al Domain Driven Design
Securing your apps with OAuth2 and OpenID Connect - Roland Guijt - Codemotion...
Angular Rebooted: Components Everywhere
Ddd brutto sporco e cattivo
m-v-vm @ dotNetMarche
OAuth2 and IdentityServer3
Keep calm and deploy
Il cielo è sempre più azure
Code metrics
On working in Particular
Universal app ma universal per davvero
There is a bot for that
Approccio prestazionale antincendio nelle caserme
Ad

Similar to Single Sign On con IdentityServer (20)

PPTX
Introduzione a CardSpace
PPTX
CQRS ed Event Sourcing su Windows Azure: Applicazioni Distribuite, Scalabilit...
PPTX
Corso IFTS CyberSecurity Expert - Attacco di Armando e Operazione Black Tulip
PDF
Wordpress Security Regole e Plugin base per evitare l'hacking del vostro sito...
PPT
Public Key Infrastructure
KEY
Ugialtnet openid presentation
PPTX
CCI2017 - Protect and manage your digital transformation - Giuseppe D'Osualdo...
ODP
Lightning saml
PDF
Special report digital identity security
PDF
AICEL_Perché Compriamo O Non Compriamo Via Web
PDF
Mobile, iot e social network
PDF
Intelligenza Artificiale: I trend nelle applicazioni di business - Una serie ...
PPTX
Presentazione corso sicurezza informatica Vicenza Software
ODP
Web Application Insecurity L D2007
PDF
Il Web del Futuro: Web Semantico + OpenID = Autenticazione Sicura e Web of Trust
PPT
Corso di buon e-commerce - Centro Produttività Veneto (Vicenza)
PPT
Corso Firma Digitale Mi
PPTX
Mean Auth Application - Speech Slides
PDF
Company presentation
PPTX
Test Driven Development @ Xe.Net
Introduzione a CardSpace
CQRS ed Event Sourcing su Windows Azure: Applicazioni Distribuite, Scalabilit...
Corso IFTS CyberSecurity Expert - Attacco di Armando e Operazione Black Tulip
Wordpress Security Regole e Plugin base per evitare l'hacking del vostro sito...
Public Key Infrastructure
Ugialtnet openid presentation
CCI2017 - Protect and manage your digital transformation - Giuseppe D'Osualdo...
Lightning saml
Special report digital identity security
AICEL_Perché Compriamo O Non Compriamo Via Web
Mobile, iot e social network
Intelligenza Artificiale: I trend nelle applicazioni di business - Una serie ...
Presentazione corso sicurezza informatica Vicenza Software
Web Application Insecurity L D2007
Il Web del Futuro: Web Semantico + OpenID = Autenticazione Sicura e Web of Trust
Corso di buon e-commerce - Centro Produttività Veneto (Vicenza)
Corso Firma Digitale Mi
Mean Auth Application - Speech Slides
Company presentation
Test Driven Development @ Xe.Net
Ad

More from Mauro Servienti (20)

PPTX
Welcome to the (state) machine @ ExploreDDD 2019
PPTX
Designing a ui for microservices @ .NET Day Switzerland 2019
PPTX
Welcome to the (state) machine @ Xe One Day Enterprise Applications
PPTX
All our aggregates are wrong @ NDC Copenhagen 2019
PPTX
Be like water, my friend @ Agile for Innovation 2019
PPTX
Microservices architecture is it the right choice to design long-living syste...
PPTX
Titles, abstracts, and bio matter... oh my! @ Global Diversity CFP Day 2019
PPTX
Living organizations, particular software @ do IT Better Parma
PPTX
Welcome to the (state) machine @ Crafted Software
PPTX
PO is dead, long live the PO - Italian Agile Day 2018
PPTX
Design a UI for your Microservices @ Do IT Better
PPTX
Microservices and pineapple on pizza what do they have in common - dos and ...
PPTX
All our aggregates are wrong (ExploreDDD 2018)
PPTX
Designing a ui for microservices
PPTX
Po is dead, long live the po
PPTX
Shipping code is not the problem, deciding what to ship it is!
PPTX
GraphQL - Where are you from? Where are you going?
PPTX
Dall'idea al deploy un lungo viaggio che passa per git flow e semver
PPTX
Progettare una UI per i Microservices
PPTX
The road to a Service Oriented Architecture is paved with messages
Welcome to the (state) machine @ ExploreDDD 2019
Designing a ui for microservices @ .NET Day Switzerland 2019
Welcome to the (state) machine @ Xe One Day Enterprise Applications
All our aggregates are wrong @ NDC Copenhagen 2019
Be like water, my friend @ Agile for Innovation 2019
Microservices architecture is it the right choice to design long-living syste...
Titles, abstracts, and bio matter... oh my! @ Global Diversity CFP Day 2019
Living organizations, particular software @ do IT Better Parma
Welcome to the (state) machine @ Crafted Software
PO is dead, long live the PO - Italian Agile Day 2018
Design a UI for your Microservices @ Do IT Better
Microservices and pineapple on pizza what do they have in common - dos and ...
All our aggregates are wrong (ExploreDDD 2018)
Designing a ui for microservices
Po is dead, long live the po
Shipping code is not the problem, deciding what to ship it is!
GraphQL - Where are you from? Where are you going?
Dall'idea al deploy un lungo viaggio che passa per git flow e semver
Progettare una UI per i Microservices
The road to a Service Oriented Architecture is paved with messages

Single Sign On con IdentityServer

  • 1. 18 Novembre 2016 Single Sign On con Identity Server Mauro Servienti
  • 2. A volte ritornano ho fatto una sessione simile la prima volta a Windows Developer Conference nel 2012
  • 3. Mauro Servienti appassionato di cibo e sport lo sport è in funzione del cibo la tecnologia mi annoia Dicono di me: era un bravo programmatore (cit. Ema) pretend to be an architect
  • 4. Coming out ho un biglietto per i Depeche e ho appena visto i Cure
  • 5. Sicurezza, ovunque sicurezza. Torniamo seri che la sicurezza è importante
  • 6. …e Trenitalia non sa cosa sia. Password in chiaro, case insentive. #ciaone
  • 7. Autenticazione e Autorizzazione • Autenticazione: verifica che siate chi dite di essere • Ad esempio tramite una combinazione di Username e Password • Autorizzazione: verifica che possiate fare quello che cercate di fare • Ad esempio tramite ruoli e claim
  • 8. «claim» questi sconosciuti • Abbiamo sempre pensato in termini di Gruppi/ACL • .NET ha introdotto nel 2001 i «ruoli» • Mai decisione fu più nefasta :-) • Finalmente i «claim» cercano di mettere ordine nel caos • È semplicemente un attributo dell’utente • Il nome, lo user-id, la mail, i ruoli, l’età possono essere tutti «claim» • È compito, come è ovvio che sia, del client decidere come interpretarlo
  • 9. Profiles Claims Come funziona di solito Applicazione Backend/FBA Users
  • 10. È veramente un problema nostro? • Date le seguenti «robe»: • Utenti • Claim • Profili • Ce ne dobbiamo occupare noi? • No, o meglio non proprio: • Utenti: no • Claim: probabilmente in parte • Profili: si
  • 11. Perché gli utenti no • smazzarsi la gestione sicura di username e password è noioso • Quanti di voi fanno hashing con salt random delle password? • Quanti di voi hanno il supporto per 2FA? • Quanti di voi hanno SSL EV? • Quanti di voi hanno 2FA per il cambio password? • gli utenti odiano creare un altro utente per usare un servizio • la privacy è una rottura che non volete gestire
  • 12. Perché i claim in parte si • Molti claim comuni a tanti utenti a prescindere • altri no sono peculiari • Non è quindi detto che quello che ci troviamo a disposizione basti
  • 13. Perché i profili si • Il profilo è un problema totalmente applicativo • Un «utente», inteso come user, rappresenta l’utente in generale • Un profilo rappresenta un utente nel contesto applicativo
  • 14. la federazione It’s a long way to the top if you wanna rock ‘n’ roll…
  • 15. La federazione App Backend/FBA Trusted 3rd party STS Nonèunproblemanostro Profiles Claims Users nameidentifier nameidentifier
  • 16. STS (security token service) • Non è un problema nostro: ci limitiamo alla fiducia • Il suo unico ruolo è emettere Security Token • Tipicamente dopo aver verificato le credenziali, qualsiasi esse siano • Un Security Token: • È crittografato e firmato • La fiducia di cui sopra dice che lo possiamo spacchettare • Contiene tutte le informazioni relative all’utente
  • 17. Il flusso federato • L’utente si presenta e non è autenticato • L’applicazione lo rimbalza verso l’STS • Dandogli un token che identifica l’applicazione • Token che solo l’STS può spacchettare • L’utente si presenta all’STS con il token • L’STS a questo punto sa da dove arriva l’utente • L’utente si autentica con le sue credenziali • L’STS genera un security token valido e con una scadenza • L’utente torna dall’applicazione • L’applicazione spacchetta il security token e sa che l’utente è buono
  • 18. Applicazione Autorizzazione Applicazione Autenticazione e richiesta di accesso Generazione del Token Accesso all’API con il Token
  • 19. La federazione App Backend/FBA Trusted 3rd party STS Nonèunproblemanostro Profiles Claims Users nameidentifier nameidentifier
  • 21. Abbiamo abituato bene i nostri utenti…
  • 22. Un STS non ci basta più • Abbiamo bisogno di un ACS • Access Control Service • Fa da proxy verso uno o più STS • Noi ci fidiamo dell’ACS, lui si fida degli STS • E per proprietà transitiva siamo tutti felici • Possiamo fare self-hosting dell’ACS • APS.Net 4 lo faceva • Possiamo delegare a terze parti come l’IdentityServer di Thinktecture • Di cui a sua volta si può fare self-hosting
  • 23. FacebookGoogle Account La federazione App Backend Custom FBA Profiles IdentityServer ACS Active Directory MS Account nameidentifier Nonèunproblemanostro Twitter
  • 24. FacebookGoogle Account Ad ognuno il suo protocollo Custom FBA IdentityServer ACS Active Directory MS Account Twitter
  • 25. Applicazione Autorizzazione Applicazione Autenticazione e richiesta di accesso Generazione del Token Accesso all’API con il Token Azure ACS Autenticazione Consenso Codice di Accesso Codice di Accesso
  • 26. Ma non è così semplice
  • 27. Lei e lui • Gli attori sono due • Utente • ApplicazioneUtente Applicazione STS/ACS
  • 28. Lei, lui e l’altra • Gli attori sono tre • Utente • Applicazione • API • L’utente vuole accedere all’API • Attraverso l’applicazione • Una SPA deve funzionare così • Tipicamente si parla di OAuth Utente Applicazione STS/ACS API
  • 29. OAuth Una piccola nota di redazione…
  • 30. The problem is that OAuth 2.0 is a Delegated Authorization protocol, and not a Authentication protocol. ... OAuth provides an access token to a client, so that it can access a protected resource, based on the permission of the resource owner. Fonte: http://www.thread-safe.com/2012/01/problem-with-oauth-for-authentication.html
  • 31. Demo
  • 32. Grazie Mauro Servienti Solution Architect @ Particular Software | @mauroservienti | //blogs.ugidotnet.org/topics/