⚠️ WORK IN PROGRESS⚠️
Questo repository ospita lo sviluppo di un nuovo Identity Provider di test per consentire agli sviluppatori di verificare le proprie integrazioni con SPID in modo semplice, ottenendo messaggi diagnostici chiari ed essere certi dell'interoperabilità.
Ad oggi questo pacchetto è funzionante ma è in corso un lavoro di evoluzione e documentazione. Se ne raccomanda l'uso, ed eventuali problemi possono essere segnalati aprendo issue.
In alternativa è possibile usare il precedente IdP di test.
Installare le seguenti librerie:
Su MacOS X si può usare brew install libxmlsec1 libffi
.
Su Debian/Ubuntu si può usare apt-get install libxmlsec1 libffi6
.
Creare ed attivare un virtualenv (opzionale ma raccomandato)
virtualenv -p `which python` env
. env/bin/activate
Installare i pacchetti necessari tramite pip
pip install -r requirements.txt
Alternativamente alla procedura di installazione manuale riportata sopra, è possible installare l'Identity Provider di test tramite lo strumento di configuration management ansible. Tutte le informazioni sono nella directory ansible/.
Generare una chiave privata ed un certificato.
openssl req -x509 -nodes -sha256 -days 365 -newkey rsa:2048 -keyout idp.key -out idp.crt
Creare e configurare il file config.yaml.
cp config.yaml.example config.yaml
L'unico valore che è necessario modificare rispetto ai default è metadata
, che contiene i metadata dei Service Provider che si intendono collegare all'IdP di test. Per generare tali metadati vi sono tre possibilità:
- compilarli a mano a partire dal file sp_metadata.xml.example;
- compilarli usando l'interfaccia disponibile in https://idp.spid.gov.it:8080/
- generarli (ed esporli) automaticamente dalla propria implementazione Service Provider (ad esempio https://www.mioserviceprovider.it/spid/metadata).
python spid-testenv.py
Nella home page è presente una lista di Service Providers registrati sull'IdP di test.
Il metadata dell'Identity Provider di test è generato automaticamente ed esposto all'URL /metadata
. Questo metadata deve essere inserito nella configurazione del proprio Service Provider.
Gli utenti di test sono configurati nel file users.json e possono essere aggiunti chiamando la pagina /add-user
.
Il log del flusso di login / logout viene registrato nel file idp.log (tramite configurazione pysaml2) e inviato in STDOUT insieme al log del web server.
Questo repository è mantenuto da AgID - Agenzia per l'Italia Digitale con l'ausilio del Team per la Trasformazione Digitale.