Spid in php puro

Ciao a tutti

Collaboro con una azienda che realizza software e servizi per i comuni ( principalmente tributi locali ),
mi hanno chiesto di implementare un sistema di login attraverso lo spid, vorrei capire quale sia il metodo più veloce.

Il metodo che preferirei utilizzare è un semplice form in protocollo https che indirizza direttamente a un Identity Providers e mi restituisca i dati richiesti in una determinata url in formato json o post, esiste qualcosa del genere?

2 Mi Piace

Non so se questo progetto fa al caso tuo:

SPID SimpleSAMLphp

1 Mi Piace

grazie @robertob, gia visto e curiosato su github/italia, sperava una versione più semplice di implementazione di login, quindi devo utilizzare il protocollo SAML obbligatoriamente :frowning:

@wort,
attualmente è disponibile il protocollo SAML anche se sto lavorando per rilasciare anche la possibilità di utilizzarlo con OpenID Connect, ti consiglio come segnalato da @robertob https://github.com/italia/spid-sp-simplesamlphp, ti “costa” soltanto l’installazione e l’inclusione di un file dove vuoi ricevere gli attributi :slight_smile:

Se hai necessità chiedi pure qui sul forum e ti aiuteremo.

Umberto Rosini
Agenzia per l’Italia Digitale

grazie @umbros, ok userò simplesamlphp, vi farò sapere :slight_smile:

A questo proposito ne approfitto per chiedere se un SP per essere compliant con gli IP italiani deve necessariamente utilizzare la versione pubblicata qui:


o se in modo equivalente può utilizzare l’ultima release pubblicata su:
https://simplesamlphp.org/download

Grazie,
Raffaele Petteruti

Riprendo la discussione a beneficio di chi dovesse cercare indicazioni per implementare un SP con SimpleSAMLphp.

Il tool spid-php permette di creare un SP SPID, scaricando l’ultima versione ufficiale di SimpleSAMLphp e configurandola opportunamente per l’integrazione con SPID in modo da risultare pienamente conforme alle specifiche richieste dalla validazione tecnica.

1 Mi Piace

Buonasera a tutti,
ho sviluppato una piattaforma web in php che usa le classiche sessioni per gestire il login.
Mi domandavo se fosse possibile adoperare lo spid per garantire l’accesso agli utenti associati ad un certo codice fiscale, dopodiché lasciare il software intatto.
Quindi, ricapitolando le fasi:
Utente sceglie di accedere via spid e non a mezzo delle sue solite credenziali (usa il bottone LOGIN con spid). -> Il sistema spid autentica la persona e restituisce un Sì con un webhook alla mia pagina web -> Io genero una sessione come se l’utente avesse effettuato normalmente l’accesso, in corrispondenza del relativo codice fiscale.
Grazie mille!

Sono un dipendente del comune, e abbiamo necessità di inserire l’autenticazione SPID su un sotto dominio del portale realizzato in LAMP. Sono in difficoltà per quanto riguarda la comprensione dei parametri da configurare richiesti da composer durante l’installazone. Esiste una guida pratica e semplice che descrive (magari con un esempio) i parametri da inserire e il loro significato. Ogni tipo di aiuto è ben accetto.

Buongiorno @ced-canegrate, quali sono i parametri sui quali hai difficoltà?

Buongiorno, e grazie ancora per l’aiuto.
Non sono sicuro di avere capito correttamente il significato dei parametri richiesti durante l’installazione e quindi chiedo conferma dei valori che ho assegnato,
tenendo presente che le librerie di identificazione(sampleSpidphp), i certificati autogenerati(pem e crt) e il metadata-editato a mano(metadata.xml) sono state inserite nel dominio seguente: https://spid.comunecanegrate.it, nelle cartelle (vendor,cert,metadata) mentre il servizio che si vuole raggiungere (e che dovrebbe ricevere gli attributi dallo spid identity provider) risponde all’indirizzo https://iss.comunecanegrate.it

-Name for service endpoint: ISS (è solo il nome del link al servizio? oppure devo mettere l’url?)
-IdentityID: https://spid.comunecanegrate.it (dove si trova il file per la richiesta di login?)
-serviceproviderdomain: iss.comunecanegrate.it (ho messo il dominio del servizio che riceve gli attributi è giusto?)
-Service Provider Name: ISS
-Service provider description: Iscrizione Servizi Scolastici
-Organization (diplay) Name:Comune di Canegrate
-Organization url: https://www.comunecanegrate.it
-Organization IPA:c_b593
-Locality name: Canegrate
-Attribute da selezionare con Y sono per me codice fiscale, cognome, nome, mail: name, familyName, fiscalNumber e email
-add configuration for public test IDP idp.spid.gov.it: ?? (Ho risposto Y perchè credo che voglia dire che vada fatta prima in test la verifica ma non ho capito se devo iscrivere il comune a questo indirizzo)
-optional URI for local test IDP metadata: https://spid.comunecanegrate.it/metadata/metadata.xml (punta ai miei metadati compilati a mano, ma ho degli errori testandolo in docker con spid-saml-check…ho un solo servizio di index=0, che punta a https://iss.comunecanegrate.it. L’errore restituito è di specificare il default (isDefault), ma nell’esempio in documentazione isDefault non compare: messo dentro isDefault come attributo dell’ -AssertionConsumerService, ma l’errore non cambia. dove va messo?
-add configuration for agid validator validator.spid.gov.it ?? non capisco cosa voglia dire
-add example login-spid.php in www: Y
-add example proxy-spid.php??? Non so cosa significa
-password for simpleSAMLphp(admin) e insert secretsalt:???: Ho utilizzato i valori predefiniti,ma non ho capito bene a che cosa servono.

  • Name for service endpoint:
    è un nome che verrà utilizzato per creare un link simbolico accessibile dal web server collegato all’installazione spid. Va bene ISS, come anche service oppure spid.

  • IdentityID:
    forse intendevi EntityID, è l’identificativo univoco del tuo service provider all’interno della federazione SPID, non deve essere necessariamente una URL ma è consigliato (https://www.agid.gov.it/sites/default/files/repository_files/spid-avviso-n37-entityid_mt_sp.pdf). Va bene https://spid.comunecanegrate.it

  • serviceproviderdomain:
    Il dominio sul quale devono essere bloccati i cookie di sessione. Va bene iss.comunecanegrate.it

  • add configuration for public test IDP idp.spid.gov.it: ?
    Basta inserire Y. Serve ad aggiungere automaticamente le configurazioni per collegare l’idp di test.

  • optional URI for local test IDP metadata:
    Puoi inserire l’url del metadata di un ulteriore IdP da configurare in automatico, oppure invio per ignorare.

  • add configuration for agid validator validator.spid.gov.it ?
    Basta inserire Y per configurare automaticamente il collegamento a SPID Validator ufficiale richiesto da AgID per la verifica tecnica.

  • add example login-spid.php in www: Y

  • add example proxy-spid.php?
    se Y permette di salvare nella root del webserver un file di esempio proxy-spid.php che mostra come utilizzare spid-php come proxy.

  • password for simpleSAMLphp(admin) e insert secretsalt:?:
    sono password e secret per proteggere la tua installazione simpleSAMLphp

2 Mi Piace

Buongiorno, chiedo ancora delucidazioni sullo spid-php.
Accedendo alla pagina di log-in e scegliendo un qualsiasi identity provider proposto mi viene restituito che la Request è in formato scorretto.
Dipende dal fatto che il comune non è ancora accreditato come SPID service provider in AGID, o i motivi possono essere altri?
Grazie
David

Buongiorno @ced-canegrate,
esattamente, la richiesta di autenticazione verso gli IdP è valida solo dal momento in cui il metadata del Service Provider è accreditato da AgID, quindi inserito nel registro SPID e notificato agli IdP.
Per l’adesione a SPID occorre seguire la seguente procedura:

Buongiorno, grazie per la sollecita risposta…
Ora ho purtroppo un problema con il metadata.xml che non riesco a risolvere. mi piacerebbe trovare un esempio (oppure documentazione per dummies) del campo ds:signature da inserire nel metadata.xml, perchè viene segnalato dal tool SPID Validator come errato…

La firma sul metadata (tag Signature), non va generata “a mano”, ma è automaticamente generata dall’applicativo/libreria utilizzato per la generazione del metadata, oppure può essere applicato tramite uno dei vari tool disponibili a tale scopo.

Ad esempio, su github è scaricabile questo tool oppure quest’altro tool.

Grazie mille. Ora ci provo

Buongiorno sono riuscito ad utilizzare il primo tool (per la firma del metadata) senza problemi e ho controllato con SPID validator il risultato… purtroppo mi segnala nel metadata la non corrispondenza tra “AssertionConsumerServiceURL” attribute e “AssertionConsumerService Location” (TR pag. 8). Non ho capito dove va inserito l’attributo AssertionConsumerServiceURL, anche guardando la documentazione, non ho trovato un esempio per il service provider pubblico che contenga tale attributo nel metadata!
Qualcuno sa dove va inserito?

Per TR si intendono le Regole Tecniche SPID, in cui a pag. 8 c’ la descrizione delle AuthnRequest.

Credo che tu nel metadata abbia indicato come Location dell’AssertionConsumerService una determinata url ( ad es. https://www.pippo.com), mentre nell’AuthnRequest tu indichi come AssertionConsumerServiceURL un’altra url (ad es. https://www.paperino.com).

Questo genera un errore, in quanto come AssertionConsumerServiceURL puoi indicare solo url già precedentemente indicate come location di un AssertionConsumerService.

Attenzione che le url possono differire anche per un solo carattere, ad esempio un / finale in più ( https://www.pippo.com è diverso da https://www.pippo.com/ ) oppure per un protocollo diverso (https://www.pippo.com è diverso da http://www.pippo.com).

Grazie , Purtroppo AssertionConsumerServiceURL non l’ho proprio indicato nel metadata.

Devo inserirlo quind nell’ AuthnRequest