21

Jul

Windows Azure – I Claims, cosa sono

Questo non è un post su Azure, ma siccome i Claims non sono ancora alle orecchie dei molti, mi sembrava il caso di parlarne con qualche esempio. Mi ispirerò ad un ottimo libro a riguardo che si chiama “Claims-based Identity and Access Control” di Microsoft, tra i cui autori c’è anche Vittorio Bertocci.

L’autenticazione Claim-based, o più generalmente la gestione dell’Identity tramite claims è un argomento insolitamente ostico ai molti, che probabilmente già hanno utilizzato o meglio implementato il pattern a loro insaputa. Partiamo dalla necessità: autenticazione, autorizzazione, varie ed eventuali. Oggi funziona così:

  • Il sistema custom chiede user-name e password (authentication)
  • Autentica verso la sorgente dati
  • Stabilisce i permessi (authorization)
  • Permette all’utente di procedere nelle operazioni

Lo svantaggio dei sistemi di autenticazione custom è che sono appunto, custom e che isolano l’applicazione invece di integrarla con altri sistemi (a meno di procedure più o meno complesse per gestire il single sing-on. Inoltre supponiamo di utilizzare Kerberos per l’autenticazione: Kerberos durante il colloquio ci fornisce identità e gruppi, ma se avessi bisogno di altri dati? Per esempio una email?

Allora dovrei certamente andare a fare query su AD (in caso di autenticazione Windows) e comunque dovrei gestire la problematica puntualmente.

Il concetto di Claims è un pò diverso:

  • Un soggetto T vuole accedere alla risorsa X
  • Il gestore della risorsa X dice al soggetto T che ci vuole una certa autorizzazione per procedere
  • Il soggetto T si rivolge a Y chiedendo di erogare un documento valido per X
  • Y eroga il documento e T lo presenta al gestore di X per ottenere l’accesso (il gestore potrà così verificare che T abbia tutti i permessi per procedere)

Rispieghiamo tutto partendo dall’ormai celebre esempio del volo aereo.

Una persona che deve prendere una aereo oggi non deve recarsi all’imbarco con una speciale smartcard che lo identifichi, erogata dalla compagnia aerea, ovvero con una coppia di credenziali “custom” per compagnia. Il processo attuale è abbastanza claim-based:

  • Una persona si reca ai banchi di check-in dove viene fatta una sorta di identificazione (con ID, Patente, Passaporto)
  • A quel punto il personale consegna una carta di imbarco che, oltre a rappresentare l’autorizzazione a salire a bordo contiene molte informazioni
  • Il personale al gate può, leggendo sulla carta di imbarco, ottenere dati di interesse riguardo al passeggero

Questo processo è una mappatura quasi 1:1 di ciò che avviene nel modello Claims-based. Ora che sappiamo il meccanismo, ecco una immagine che ispirerà i prossimi post a riguardo:

image

by Roberto Freato on 7/21/2011
Post archive