Coder Social home page Coder Social logo

gtrevisani / spid-testenv2 Goto Github PK

View Code? Open in Web Editor NEW

This project forked from italia/spid-testenv2

0.0 0.0 0.0 2.64 MB

New test Identity Provider for SPID

License: GNU Affero General Public License v3.0

Python 83.26% CSS 6.78% JavaScript 1.38% HTML 8.29% Dockerfile 0.18% Shell 0.12%

spid-testenv2's Introduction

SPID

Join the #spid-testenv channel Get invited SPID on forum.italia.it Build Status

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

  • Python 3+

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.

Installazione

Manuale

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

Ansible

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/.

Docker

Alternativamente alla procedura di installazione manuale è possible installare ed eseguire l'Identity Provider di test usando l'immagine presente su Docker Hub.

Per ottenere la persistenza della configurazione è necessario creare nell'host una directory, da collocarsi in un percorso a piacere (di seguito un suggerimento). Tale directory sarà mappata in conf/ all'interno del container.

mkdir /etc/spid-testenv2

Creare nella directory il file config.yaml e la coppia chiave/certificato per l'IdP, nonché eventuali metadata SP, come indicato nel paragrafo successivo.

Creare il container con il seguente comando:

docker create --name spid-testenv2 -p 8088:8088 --restart=always \
   --mount src="/etc/spid-testenv2",target="/app/conf",type=bind \
   italia/spid-testenv2

Avviare il container:

docker start spid-testenv2

Il log si può visualizzare con il comando:

docker logs -f spid-testenv2

Configurazione

Generare una chiave privata ed un certificato (non necessario se si usa il container Docker).

openssl req -x509 -nodes -sha256 -subj '/C=IT' -newkey rsa:2048 -keyout conf/idp.key -out conf/idp.crt

Creare e configurare il file config.yaml.

cp conf/config.yaml.example conf/config.yaml

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 all'IdP di test. Per generare tali metadati vi sono tre possibilità:

  1. compilarli a mano a partire dal file sp_metadata.xml.example;
  2. compilarli usando l'interfaccia disponibile in https://idp.spid.gov.it:8080/
  3. generarli (ed esporli) automaticamente dalla propria implementazione Service Provider (ad esempio https://www.mioserviceprovider.it/spid/metadata).

Il testenv2 supporta il caricamento in tre modalità, che possono essere combinate tra loro:

  • local: i metadati vengono letti da file locali (all'avviamento del testenv2);
  • remote: i metadati vengono letti da URL HTTP remote (all'avviamento del 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.

Avvio

python spid-testenv.py

Home page

Nella home page è presente la lista dei Service Providers registrati sull'IdP di test.

Metadata IdP

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 chiamando la pagina /add-user.

In alternativa è possibile usare un database Postgres configurando l'opzione users_db.

Logging

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.

Autori

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

Link utili

spid-testenv2's People

Contributors

alranel avatar fmarco avatar bfabio avatar archetipo avatar sanjioh avatar davidlibrera avatar ioggstream avatar umbros avatar dependabot[bot] avatar peppelinux avatar fiblan avatar lucaprete avatar damikael avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.