italia/spid-symfony-bundle

A Bundle to make Symfony3 capable of using SPID authentication, based on italia/spid-php-lib

v0.2.2-beta 2019-01-22 08:58 UTC

This package is auto-updated.

Last update: 2024-04-22 20:25:31 UTC


README

⚠️ WORK IN PROGRESS ⚠️

Questo bundle permette di integrare facilmente la libreria italia/spid-php-lib in un progetto Symfony.

Vengono messe a disposizione delle rotte e dei servizi che possono essere facilmente sovrascritti

Una necessità tipica che non viene implementata da questo bundle è la necessità di salvare i dati dell'utente che arrivano tramite SPID.

Installazione

Step 1: Installazione e configurazione

Installare il repository tramite composer

composer require italia/spid-simfony-bundle

Abilitare il bundle aggiungendolo all' AppKernel

<?php
// app/AppKernel.php

// ...
class AppKernel extends Kernel
{
    public function registerBundles()
    {
        $bundles = array(
            // ...
            new Italia\SpidSymfonyBundle\SpidSymfonyBundle(),
        );

        // ...
    }

    // ...
}

Configurare il security.yml per usare l'authenticator e lo user provider

security:
  providers:
    spid_user_provider:
      id: id_del_servizio
  firewalls
    spid:
      pattern: /il/vostro/pattern/
      guard:
        provider: spid_user_provider
        authenticators:
          - spid.authenticator

Il guardAuthenticator proposto è molto basilare, va esteso secondo le necessità del progetto

Includere il routing se si vogliono usare le rotte di default

spid_security:
  resource: '@SpidSymfonyBundle/Resources/config/routing/saml_routes.yml'

Prestare attenzione alla rotta acs che deve ovviamente coincidere con la rotta esposta

Aggiungere la configurazione del bundle:

spid_symfony:
  sp_entityid: 'http://some.site.it'
  sp_key_file: '%kernel.root_dir%/../example/sp.key'
  sp_cert_file: '%kernel.root_dir%/../example/sp.crt'
  sp_singlelogoutservice: 
    - [ 'http://some.site.it/slo', '' ]
  sp_org_name: 'dev-system'
  sp_attributeconsumingservice:
    - ["name", "familyName", "fiscalNumber", "email"]
    - ["name", "familyName", "fiscalNumber", "email", "spidCode"]
  sp_assertionconsumerservice:
    - 'http://some.site.it/acs'
  sp_org_display_name: 'Sistema di Sviluppo'
  idp_metadata_folder: '%kernel.root_dir%/../example/idp_metadata'

Step 2: (opzionale) salvataggio dell'utente

Se necessario è possibile salvare l'utente recuperato tramite PISD. Il punto più logico dove farlo è dentro l'Authenticator fornito, facendo override del metodo getUser e sfruttando i dati contenuti in $credentials per istanziare un nuovo utente da persistere

Overrides:

Il template di login può essere sovrascritto mettendo il proprio in app/Resources/SpidSymfonyBundle/views/Security/chooseidp.html.twig Per la documentazione relativa al pulsante SPID standard fare riferimento a https://github.com/italia/spid-smart-button Ce n'è una versione disponibile nel bundle per comodità di test in fase di sviluppo, la versione fornita va sostituita con quella valida al momento della messa in produzione.

Il pulsante fornito con questo bundle non è garantito come valido o funzionante

IDP

Per configurare l'IDP di test fare riferimento a https://github.com/italia/spid-testenv2