Benvenuto nella documentazione del plugin Django SPID!

Disclaimer

Siamo a pochi minuti dalla PR:

Il progetto django-spid, è ovviamente in versione 0.1, si riassumono per praticità in questo spazio i risultati raggiunti:

insomma, il codice è qui, le configurazioni di GitHub ovviamente rimangono sul nostro repo...

Introduzione

About

Testo di prova carino.

Progettazione

Testo di prova bellino.

Installazione

  1. L’installazione consiste nel clonare inizialmente la seguente repo.

  2. Successivamente si procederà con la creazione di un ambiente virtuale, mediante virtual-env, nella quale l’utente installerà le dipendenze richieste dall’applicativo software attraverso il comando:

    python pip install -r requirements.txt

  3. Fatto ciò, occorrerà inizializzare il database affinché l’intero sistema cooperi al raggiungimento dello scopo, tramite il seguente comando:

    ./manage.py migrate

  4. In seguito sarà necessario avviare il server:

    ./manage.py runserver

  5. A questo punto, basterà visualizzare sul proprio browser il localhost puntandolo sulla porta 8000, valore di default, visualizzando così l’interfaccia grafica prodotta dal software.

  6. Infine sarà possibile tenere sotto controllo il log degli eventi nella bash da cui è stato lanciato il comando runserver per poter leggere eventuali errori.

Django SPID Plugin

Il plugin SPID per Django si basa sull’applicazione Django django-saml2-auth

Di tale applicazione è stato fatto un fork su https://github.com/pdpfsug/django-saml2-auth per consentire il supporto di multipli IdentityProvider.

Poi è stata creata l’app django-spid che include le fixtures con i valori degli IdP SPID italiani supportati dal bottone SPID SP access button

Cosa è necessario fare

Attestare il proprio SP sugli IdP di cui si vuole supportare l’autenticazione

Per ulteriori opzioni di configurazione vedere il repository github della app.

Appendice: SAML

Il protocollo SAML in breve

SAML è il mezzo (o più specificatamente il framework/protocollo) attraverso cui SPID realizza la parte di autenticazione.

Le entità (entity) coinvolte nel protocollo SAML sono fondamentalmente 2:

  1. il Service Provider (SP)che è il servizio web di cui l’utente vuole usufruire
  2. l’ Identity Provider (IdP) che è il server di autenticazione SSO e verifica le credenziali dell’utente

Esempi di IdP sono Poste Italiane, Aruba, etc., quindi probabilmente non lo si dovrà reimplementare.

_images/relazione-saml.png

La relazione tra i 3 soggetti del protocollo SAML

Più in dettaglio le fasi del processo di autenticazione sono mostrate come da schema seguente

_images/fasi-saml.png

Le fasi del processo di autenticazione SAML

L’entityID

L’unico campo richiesto obbligatoriamente nella configurazione di un Service Provider è l’entity ID. L’entity Id di un Service Provider deve essere univoco all’interno dell’Identity Provider cui si registra, per questo di solito si usa il FQDN.

L’AssertionConsumerService

Almeno un elemento di questo tipo deve essere definito nei metadati di un Service Provider.

<AssertionConsumerService> [One or More] One or more elements that describe indexed endpoints that support the profiles of the Authentication Request protocol defined in [SAMLProf]. All service providers support at least one such endpoint, by definition.

The <md:AssertionConsumerService> element is used to configure handlers that are responsible for consuming SAML assertions; that is, they process an assertion according to a profile, extract its contents, create a new user session, and typically produce a cookie to represent the session.

I metadati

Ogni entità del protocollo deve esporre dei metadati e questi sono differenti sia per tipologia che per contenuto. Infatti ogni entità può assumere uno dei ruoli:

  • SSO Identity Provider
  • SSO Service Provider
  • Authentication Authority
  • Attribute Authority
  • Policy Decision Point
  • Affiliation

e a seconda di quelli assunti specifica degli elementi XML differenti ad esempio:

  • SPSSODescriptor: per le funzioni di Service Provider
  • IDPSSODescriptor: per le funzioni di Identity Provider

Nell’SP si devono configurare i metadati dall’IdP e l’IdP deve avere i metadati dell’SP

Indices and tables