Questo Identity Provider consente agli sviluppatori di verificare le proprie integrazioni con SPID in modo semplice, ottenendo messaggi diagnostici chiari ed assicurandosi dell'interoperabilità.
Può essere facilmente eseguito in locale o su un proprio server seguendo le istruzioni di seguito riportate.
⚠️ AVVISO DI SICUREZZA: spid-testenv2 non deve essere utilizzato in ambienti di produzione. Nessun Service Provider deve accettare in produzione autenticazioni prodotte da spid-testenv2, che è solo uno strumento da utilizzarsi in fase di sviluppo e test.
-
Python 3.7
-
Clonare il repository in locale
git clone https://github.com/italia/spid-testenv2.git
-
Entrare nella directory
cd spid-testenv2
-
Fare build dell'immagine
docker build -t italia/spid-testenv2 .
-
Lanciare il container:
docker run -p 8088:8088 -v $(pwd)/conf:/app/conf italia/spid-testenv2
L'immagine italia/spid-testenv2
a anche disponibile su Docker Hub.
Per testare spit-testenv2 con una Docker Image Postgres
docker image pull postgres:13.2-alpine
docker run --name some-postgres -p 5432:5432 -e POSTGRES_PASSWORD=postgres -d postgres:13.2-alpine
Configurare poi in conf/conf.yml
la connessione
db: 'postgresql+psycopg2://postgres:postgres@localhost:5432/postgres'
# ...
database_admin_interface: true
-
Installare le dipendenze.
Su macOS si può usare
brew install libxmlsec1 libffi
.Su Debian/Ubuntu si può usare
apt-get install libxmlsec1 libffi6
. -
Creare ed attivare un virtualenv
virtualenv -p `which python` env . env/bin/activate
-
Installare i pacchetti necessari tramite pip
pip install -r requirements.txt
-
Generare una chiave privata ed un certificato
openssl req -x509 \ -nodes \ -sha256 \ -subj '/C=IT' \ -newkey rsa:2048 \ -keyout conf/idp.key \ -out conf/idp.crt
-
Creare e modificare il file config.yaml secondo le esigenze.
cp conf/config.yaml.example conf/config.yaml
-
Avvio
python spid-testenv.py
Alternativamente alle procedure riportate sopra, è possible installare spid-testenv2 tramite ansible.
Tutte le informazioni sono nella directory ansible/.
L'unico valore che è necessario modificare rispetto ai default è metadata
,
che indica i metadata dei Service Provider che si intendono collegare a
spid-testenv2.
I metadati possono essere:
- Compilati manualmente a partire dal file sp_metadata.xml.example;
- Generati ed esposti automaticamente dalla propria implementazione del Service Provider (ad esempio https://mioserviceprovider.example.com/metadata).
- Inseriti manualmente dall'interfaccia in
/admin/databasesprecord
.
spid-testenv2 supporta il caricamento in tre modalità, che possono essere combinate tra loro:
local
: i metadati vengono letti da file locali (all'avvio di testenv2);remote
: i metadati vengono letti da URL HTTP remote (all'avvio di testenv2);db
: i metadati vengono letti da un database PostgreSQL (alla ricezione di ciascuna richiesta).
Nel caso in cui si usi la modalità db
è sufficiente creare il database e poi
spid-testenv2 creerà automaticamente la tabella. Abilitando l'opzione
database_admin_interface
spid-testenv2 esporrà una semplice interfaccia di
gestione all'indirizzo /admin; è possibile ovviamente usare un qualsiasi tool
di gestione esterno.
I Service Provider registrati correttamente saranno visualizzati nella pagina principale in https://localhost:8088/.
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 nella pagina /add-user
.
In alternativa è possibile usare un database Postgres configurando l'opzione users_db
.
Questo software è stato sviluppato dal Team per la Trasformazione Digitale, ed è mantenuto con l'ausilio della community di Developers Italia.