Skip to content
This repository has been archived by the owner on May 9, 2022. It is now read-only.

italia/spid-testenv2

Repository files navigation

SPID

Join the #spid-testenv channel Get invited SPID on forum.italia.it .github/workflows/ci.yml

spid-testenv2

Identity Provider di test per SPID

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.

Requisiti

Installazione

Docker (consigliata)

  1. Clonare il repository in locale

    git clone https://github.com/italia/spid-testenv2.git
  2. Entrare nella directory

    cd spid-testenv2
  3. Fare build dell'immagine

    docker build -t italia/spid-testenv2 .
  4. 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

Manuale

  1. Installare le dipendenze.

    Su macOS si può usare brew install libxmlsec1 libffi.

    Su Debian/Ubuntu si può usare apt-get install libxmlsec1 libffi6.

  2. Creare ed attivare un virtualenv

    virtualenv -p `which python` env
    . env/bin/activate
  3. Installare i pacchetti necessari tramite pip

    pip install -r requirements.txt
  4. 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
  5. Creare e modificare il file config.yaml secondo le esigenze.

    cp conf/config.yaml.example conf/config.yaml
  6. Avvio

    python spid-testenv.py

Ansible

Alternativamente alle procedure riportate sopra, è possible installare spid-testenv2 tramite ansible.

Tutte le informazioni sono nella directory ansible/.

Caricamento metadata Service Provider

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:

  1. Compilati manualmente a partire dal file sp_metadata.xml.example;
  2. Generati ed esposti automaticamente dalla propria implementazione del Service Provider (ad esempio https://mioserviceprovider.example.com/metadata).
  3. 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/.

Metadata

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.

Utenti

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.

Autori

Questo software è stato sviluppato dal Team per la Trasformazione Digitale, ed è mantenuto con l'ausilio della community di Developers Italia.

Link utili