<img src="https://github.com/italia/spid-graphics/blob/master/spid-logos/spid-logo-b-lb.png" alt="SPID" data-canonical-src="https://github.com/italia/spid-graphics/blob/master/spid-logos/spid-logo-b-lb.png" width="500" height="98" />
⚠️ This software is in End of Life, please don't use spid-testenv2 anymore! For testing a SPID SP consider to use spid-saml-check for a user friendly IdP or spid-sp-test for Continuous Integration tests.
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.
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:
/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 (alla ricezione di
ciascuna richiesta).I Service Provider registrati correttamente saranno visualizzati nella pagina principale in https://localhost:8088/.
Nel caso in cui si usi la modalità db
sia il database che la tabella verranno creati automaticamente al primo avvio
se l'utente configurato ha privilegi per farlo. 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.
Per testare spid-testenv2 con un'immagine Docker di PostgreSQL
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
spid-testenv2 utilizza SQLAlchemy. Si può usare qualsivoglia DBMS engine disponibile per SQLAlchemy e non per forza esclusivamente postgres.
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.