single sign on con identityserver

32
18 Novembre 2016 Single Sign On con Identity Server Mauro Servienti

Upload: mauro-servienti

Post on 15-Feb-2017

119 views

Category:

Internet


4 download

TRANSCRIPT

Page 1: Single Sign On con IdentityServer

18 Novembre 2016

Single Sign On con Identity ServerMauro Servienti

Page 2: Single Sign On con IdentityServer

A volte ritornano

ho fatto una sessione simile la prima volta a

Windows Developer Conferencenel 2012

Page 3: Single Sign On con IdentityServer

Mauro Servienti

appassionato di cibo e sportlo sport è in funzione del cibo

la tecnologia mi annoiaDicono di me: era un bravo programmatore (cit. Ema)

pretend to be an architect

Page 4: Single Sign On con IdentityServer

Coming out

ho un biglietto per i Depechee ho appena visto i Cure

Page 5: Single Sign On con IdentityServer

Sicurezza, ovunque sicurezza.Torniamo seri che la sicurezza è importante

Page 6: Single Sign On con IdentityServer

…e Trenitalia non sa cosa sia.Password in chiaro, case insentive. #ciaone

Page 7: Single Sign On con IdentityServer

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

Page 8: Single Sign On con IdentityServer

«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

Page 9: Single Sign On con IdentityServer

Profiles

Claims

Come funziona di solito

Applicazione Backend/FBA

Users

Page 10: Single Sign On con IdentityServer

È 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

Page 11: Single Sign On con IdentityServer

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

Page 12: Single Sign On con IdentityServer

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

Page 13: Single Sign On con IdentityServer

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

Page 14: Single Sign On con IdentityServer

la federazioneIt’s a long way to the top if you wanna rock ‘n’ roll…

Page 15: Single Sign On con IdentityServer

La federazione

App Backend/FBA

Trusted3rd party

STS

Non

è u

n pr

oble

ma

nost

ro

Profiles

Claims

Users

nameidentifier

nameidentifier

Page 16: Single Sign On con IdentityServer

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

Page 17: Single Sign On con IdentityServer

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

Page 18: Single Sign On con IdentityServer

Applicazione Autorizzazione Applicazione

Autenticazione e richiesta di accesso

Generazionedel Token

Accesso all’API con il Token

Page 19: Single Sign On con IdentityServer

La federazione

App Backend/FBA

Trusted3rd party

STS

Non

è u

n pr

oble

ma

nost

ro

Profiles

Claims

Users

nameidentifier

nameidentifierAd esempio Google

Page 20: Single Sign On con IdentityServer

Uno solo!?111?1?!!!Gomblotto :-)

Page 21: Single Sign On con IdentityServer

Abbiamo abituato bene i nostri utenti…

Page 22: Single Sign On con IdentityServer

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

Page 23: Single Sign On con IdentityServer

FacebookGoogle Account

La federazioneApp Backend

Custom FBA

Profiles

IdentityServerACS

Active Directory MS Account

nameidentifier

Non

è u

n pr

oble

ma

nost

ro

Twitter

Page 24: Single Sign On con IdentityServer

FacebookGoogle Account

Ad ognuno il suo protocollo

Custom FBA

IdentityServerACS

Active Directory MS Account Twitter

Page 25: Single Sign On con IdentityServer

Applicazione Autorizzazione Applicazione

Autenticazione e richiesta di accesso

Generazionedel Token

Accesso all’API con il Token

Azure ACS

Autenticazione

Consenso

Codice di AccessoCodice di Accesso

Page 26: Single Sign On con IdentityServer

Ma non è così semplice

Page 27: Single Sign On con IdentityServer

Lei e lui

• Gli attori sono due• Utente• ApplicazioneUtente Applicazione

STS/ACS

Page 28: Single Sign On con IdentityServer

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

Page 29: Single Sign On con IdentityServer

OAuthUna piccola nota di redazione…

Page 30: Single Sign On con IdentityServer

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

Page 31: Single Sign On con IdentityServer

Demo

Page 32: Single Sign On con IdentityServer

GrazieMauro Servienti Solution Architect @ Particular Software | @mauroservienti | //blogs.ugidotnet.org/topics/