/spid-testenv2

New test Identity Provider for SPID

Primary LanguagePythonGNU Affero General Public License v3.0AGPL-3.0

spid-testenv2

Identity Provider di test per SPID

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

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

Board Kanban attività

SPID Environment

WORK IN PROGRESS

Per ora si raccomanda di usare l'IdP di test già disponibile in https://github.com/italia/spid-testenv

Requisiti

Installare le seguenti librerie di sistema:

Istruzioni

  1. Create ed attivare un virtualenv

    virtualenv -p /path/to/pythonbin env
    . env/bin/activate
    
  2. Installare i pacchetti necessari tramite pip

    pip install -r requirements.txt
    
  3. Creare e configurare il file config.yaml

    cp config.yaml.example config.yaml
    
  4. Lanciare l'eseguibile

    python spid-testenv.py
    

Generazione certificato

Per generare un certificato digitale da associare all'IdP utilizzare il seguente comando

openssl req -x509 -nodes -sha256 -days 365 -newkey rsa:2048 -keyout idp.key -out idp.crt

Nota: Le path dei due file (chiave e certificato) vanno inserite nel file di configurazione config.* .

Logging

I log del flusso di login / logout viene registrato nel file idp.log (tramite configurazione pysaml2) e tramite log di Flask.

Endpoints

  • /add-user (GET, POST), accesso libero: Consente di aggiungere un utente sull'idp impostandone eventuali attributi spid primari e secondari. Ritorna una response con status code 200.
  • /login (GET, POST), accesso tramite chiave salvata in sessione: Gestisce e processa una AuthnRequest ritornando eventuali messaggei di errore.
  • /continue-response (POST), accesso tramite chiave salvata in sessione: Ritorna una response per la AuthnRequest in ingresso se l'utente acconsente a trasferire gli attributi richiesti.
  • /metadata (GET), restituisce il metadata dell'IdP generato automaticamente, da utilizzarsi nei Service Provider.

Nota: gli endpoint (e rispettivi binding) per SSO e SLO sono impostati tramite file di configurazione.

Link

  • SPID su Developers Italia