You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Ci sono due strade per implementare un plugin per Django:
usare un middleware come Shibboleth
implementare tutto direttamente nel plugin
1. Usando Shibboleth
Pro: plugin più snello, più facile da implementare e testare, più manutenibile. Contro: aggiunge il requisito di Shibboleth, sia in sviluppo sia in deployment.
Shibboleth è un middleware, ovvero un plugin per il web server (Apache/nginx) abbinato ad un demone che si occupa di gestire il protocollo SAML nelle interazioni con l'Identity Provider e le Attribute Authorities. Esiste già un playbook Ansible che installa un'istanza di Shibboleth+nginx preconfigurata per SPID.
Un plugin per Django dovrebbe essenzialmente:
verificare se l'utente è già autenticato o no (come un qualsiasi plugin di autenticazione)
esporre il bottone di login che consente all'utente di scegliere l'Identity Provider a cui inviare la richiesta; per indicazioni vedere questo commento
popolare un oggetto user di Django con gli attributi restituiti dall'Identity Provider
Per evitare l'installazione di Shibboleth è possibile realizzare un plugin autonomo che gestisce tutto. Anche in questo caso bisogna esporre il bottone di login come sopra descritto, ma poi bisogna:
usare una libreria SAML per preparare la AuthnRequest da includere nel redirect HTTP con cui si manda l'utente all'Identity Provider scelto
esporre un endpoint HTTP (l'Assertion Consumer Service) a cui l'Identity Provider invia le proprie asserzioni (per esempio: l'esito del login)
mantenere in questo repository i metadati XML degli Identity Provider accreditati SPID
Come riferimento, queste sono le principali implementazioni di SAML per Django esistenti:
Queste librerie assumono un'architettura in cui è presente un solo Identity Provider, hard-coded nella configurazione, per cui manca lo step di selezione da parte dell'utente (che invece a noi serve: dobbiamo mostrare il bottone di login).
The text was updated successfully, but these errors were encountered:
Ci sono due strade per implementare un plugin per Django:
1. Usando Shibboleth
Pro: plugin più snello, più facile da implementare e testare, più manutenibile.
Contro: aggiunge il requisito di Shibboleth, sia in sviluppo sia in deployment.
Shibboleth è un middleware, ovvero un plugin per il web server (Apache/nginx) abbinato ad un demone che si occupa di gestire il protocollo SAML nelle interazioni con l'Identity Provider e le Attribute Authorities. Esiste già un playbook Ansible che installa un'istanza di Shibboleth+nginx preconfigurata per SPID.
Un plugin per Django dovrebbe essenzialmente:
Link utili:
2. Implementando tutto nel plugin
Per evitare l'installazione di Shibboleth è possibile realizzare un plugin autonomo che gestisce tutto. Anche in questo caso bisogna esporre il bottone di login come sopra descritto, ma poi bisogna:
Come riferimento, queste sono le principali implementazioni di SAML per Django esistenti:
Queste librerie assumono un'architettura in cui è presente un solo Identity Provider, hard-coded nella configurazione, per cui manca lo step di selezione da parte dell'utente (che invece a noi serve: dobbiamo mostrare il bottone di login).
The text was updated successfully, but these errors were encountered: