Buongiorno,
ho visto che non ci sono ancora versioni disponibili per php 8.
avete indicazioni in merito?
Tutte le librerie php per SPID si basano su SimpleSAMLphp, la cui ultima versione stabile ancora non è compatibile con PHP8.
Appena la nuova versione attualmente in sviluppo verrĂ rilasciata come stabile, a cascata le librerie SPID dovrebbero diventare compatibili con PHP8
Ciao a tutti
Sto implementando CIE per una PA.
Ho installato correttamente la libreria spid-cie-php.
Ho scaricato il metadata allâindirizzo /myservice/module.php/saml/sp/metadata.php/cie
Quando vado a caricare il metadata su Ambiente di preproduzione in Federazione mi restituisce il seguente errore:
- [ContactPerson] Dati del contatto amministrativo non validi
- [/EntityDescriptor/ContactPerson/Extensions] Elemento Extensions non presente
Andando a controllare il metadata difatti mancava la parte extension e lâho aggiunta manualmente:
<md:Extensions>
<cie:Public/>
<cie:IPACode>CodiceIPA</cie:IPACode>
<cie:Municipality>H501</cie:Municipality>
</md:Extensions>
Quando ricarico il metadata con gli extension mi compare lâerrore:
- [/EntityDescriptor/Signature/KeyInfo/X509Data/X509Certificate] Certificato non valido
Mentre prima di inserire manualmente le extension non dava questo problema.
Come posso risolvere?
Buongiorno @SebastianoS ,
nei prossimi giorni verrĂ rilasciato un aggiornamento che risolve il problema riscontrato.
Saluti.
Michele DâAmico (@damikael)
Ciao @AGS ,
confermo che, a partire dalla versione 3.14.0, spid-cie-php è compatibile con PHP8.
Michele DâAmico (@damikael)
Buongiorno,
Alla fine ho risolto firmando nuovamente il metadata tramite il tool spid-metadata-signer.
Ora il metadata è approvato ma quando vado ad accedere tramite Test authentication sources al link di Test CIE mi esce un errore direttamente da CIE dove mi dice âLa richiesta non può essere soddisfatta poichĂŠ il messaggio ricevuto non rispetta i requisiti di sicurezza del servizio di accesso.â
Contattando il gruppo CIE Enti mi hanno risposto che il problema può essere causato da uno di questi punti:
- la presenza di un sigillo elettronico, nellâelemento in testa al metadata del SP, afferente al certificato elettronico di cui al punto successivo;
- la validitĂ del certificato elettronico presente nellâelemento al punto precedente;
- la presenza, nella request, di un sigillo elettronico (afferente a uno dei certificati elettronici di cui al punto successivo) localizzato, alternativamente, nellâelemento della request, nel caso di binding in HTTP POST, ovvero nel parametro Signature della query string veicolante la request, nel caso di binding HTTP Redirect;
- la validitĂĄ del certificato elettronico afferente al sigillo di cui al punto precedente; tale certificato, allâinterno del metadata del SP, si trova tra gli elementi KeyDescriptor con lâattributo use valorizzato con signing;
- la coerenza dellâattributo Destination nella request con lâattributo Location del tag SingleSignOnService riportato nel metadata dellâIdP in relazione al tipo di binding utilizzato per inviare la request.
Per il punto 3 ed il punto 5 io ho lasciato tutto come generato dallo script.
Non capisco quale possa essere il problema.
<?xml version="1.0" encoding="UTF-8" standalone="no"?><md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" xmlns:cie="https://www.cartaidentita.interno.gov.it/saml-extensions" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" ID="GENERATO DI DEFAULT" entityID="https://MIOSITO.it/"><ds:Signature>
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
<ds:Reference URI="GENERATO DI DEFAULT">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
<ds:DigestValue>GENERATO DA METADATA SIGNER</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>
GENERATO DA METADATA SIGNER
</ds:SignatureValue>
<ds:KeyInfo>
<ds:KeyValue>
<ds:RSAKeyValue>
<ds:Modulus>
GENERATO DA METADATA SIGNER
</ds:Modulus>
<ds:Exponent>AQAB</ds:Exponent>
</ds:RSAKeyValue>
</ds:KeyValue>
<ds:X509Data>
<ds:X509Certificate>
IL CERTIFICATO GENERATO DA DEFAULT
</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
</ds:Signature>
<md:SPSSODescriptor AuthnRequestsSigned="true" WantAssertionsSigned="true" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
<md:KeyDescriptor use="signing">
<ds:KeyInfo>
<ds:X509Data>
<ds:X509Certificate>IL CERTIFICATO GENERATO DA DEFAULT</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
</md:KeyDescriptor>
<md:KeyDescriptor use="encryption">
<ds:KeyInfo>
<ds:X509Data>
<ds:X509Certificate>IL CERTIFICATO GENERATO DA DEFAULT</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
</md:KeyDescriptor>
<md:SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://MIOSITO/myservice/module.php/saml/sp/saml2-logout.php/cie"/>
<md:NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:transient</md:NameIDFormat>
<md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://MIOSITO/myservice/module.php/saml/sp/saml2-acs.php/cie" index="0" isDefault="true"/>
<md:AttributeConsumingService index="0">
<md:ServiceName xml:lang="it">MIO SITO Test</md:ServiceName>
<md:ServiceDescription xml:lang="it">MIO SITO Test</md:ServiceDescription>
<md:RequestedAttribute Name="fiscalNumber" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic"/>
<md:RequestedAttribute Name="name" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic"/>
<md:RequestedAttribute Name="familyName" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic"/>
<md:RequestedAttribute Name="dateOfBirth" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic"/>
</md:AttributeConsumingService>
</md:SPSSODescriptor>
<md:Organization>
<md:OrganizationName xml:lang="it">NOME PA COME SU FEDERAZIONE</md:OrganizationName>
<md:OrganizationDisplayName xml:lang="it">NOME PA COME SU FEDERAZIONE</md:OrganizationDisplayName>
<md:OrganizationURL xml:lang="it">https://MIOSITOISTITUZIONALE.it/</md:OrganizationURL>
</md:Organization>
<md:ContactPerson contactType="administrative">
<md:Extensions>
<cie:Public/>
<cie:IPACode>CODICE IPA COME SU FEDERAZIONE</cie:IPACode>
<cie:Municipality>H501</cie:Municipality>
<cie:Province>RM</cie:Province>
<cie:Country>IT</cie:Country>
</md:Extensions>
<md:Company>NOME PA</md:Company>
<md:EmailAddress>MAIL PA</md:EmailAddress>
<md:TelephoneNumber>TELEFONO PA</md:TelephoneNumber>
</md:ContactPerson>
</md:EntityDescriptor>
Buongiorno,
sto lavorando allâimplementazione del login tramite CIE e ho incontrato difficoltĂ nellâeffettuare la richiesta SAML in ambiente di preproduzione.
Non riesco a comprendere come inviare correttamente la richiesta SAML con i valori attesi dal server di produzione. Ho consultato il manuale tecnico, ma non mi è chiaro nÊ a quale URL devo inviare la richiesta, nÊ come dovrei comporla.
Ho notato che la libreria âspid-cie-phpâ sembra comporre automaticamente la richiesta SAML una volta inserito il pulsante âENTRA CON CIEâ, ma il valore inviato sembra non essere conforme al metadata caricato.
Inoltre, ho dovuto apportare delle modifiche manuali al metadata CIE rispetto a quanto generato dalla libreria, in quanto ho riscontrato problemi con la validazione sul portale federazione. Ho corretto gli errori e ho firmato nuovamente il metadata utilizzando âspid-metadata-signerâ.
Adesso mi trovo in difficoltĂ nel proseguire, e vorrei capire come procedere correttamente con lâinvio della richiesta SAML.
Potreste gentilmente aiutarmi a risolvere queste problematiche?
Grazie e buona giornata.
Buongiorno devo realizzare per un cliente un sistema di login tramite spid sullâapplicativo.
A prescindere dalla richeista di accreditamento che dovrĂ effettuare il cliente, ho delle domande sulla realizzazione.
Si può ottenere una sorta di metadata e servizio di autorizzazione di test sui quali effettuare le chiamate di login?
Dato che dovrò realizzarlo in un sistema separato frontend angular e backend php, come bisognerĂ effettuare lâintegrazione?
SarĂ il frontend angular a dover effettuare le chiamate verso il server di autenticazione e restituire il risultato al backend, oppure il frontend dovrĂ chiamare una rest api sul backend che si dovrĂ occupare poi di tutte le chiamate di autenticazione?
Nel secondo caso in che modo si effettuerĂ lâintegrazione con lâutente, nel momento in cui ci si scollega dalla parte frontend?
Grazie
Ciao @damikael,
ci sono novitĂ in merito a questo problema?
Lo sto riscontrando anche io.
Nel caso potrei provare a implementare le modifiche se mi puoi indirizzare eventualmente sui file in cui dovrei guardare.
Grazie
Ciao @damikael,
intanto grazie!
Mi sembra di notare però che visualizzando i metatata da module.php/saml/sp/metadata.php/cie?output=xhtml venga mostrato ancora lâxml âerratoâ, mentre il formato âflatâ viene mostrato correttamente.
Sto sbagliando qualcosa?
Grazie.
Prova a rieseguire:
composer uninstall
composer install
Adesso è andato! Grazie mille
Buongiorno, ho letto con interesse questa discussione in quanto devo configurare lâaccesso con SPID e CIE per un ente professionale della mia zona.
Ho provato alcune strade ma mi sono arenato per un motivo o unâaltro. Vi chiedo la cortesia di un supporto per verificare la mia comprensione della situazione e dei passi da seguire per giungere alla corretta installazione del gateway.
Lâente ha un hosting su datacentr di milano, e posso accedere via SSH.
Vedo che lâultima release di spid-cie-php necessita di PHP 8, ma ahimè il sito dellâente non è al momento compatibile con tale versione.
Ho dunque creato un account separato con sottodominio login.* nel quale posso settare la versione di PHP necessaria.
I servizi erogati dopo il login conto di configurarli nel sottodominio iss.* (attualmente sono erogati servizi agli iscritti tramite autenticazione classica).
Se non ho capito male i metadata saranno collegati a login., mentre a iss. verranno passati i dati dellâutente dopo lâautenticazione.
La libreria spid-cie-php la dovrò installare a partire da una cartella non esposta di login.*
In âmyserviceâ dovrò indicare âissâ oppure è una stringa alfanumerica distinta?
Mi è giĂ capitato che composer alla fine dellâinstallazione non ha creato i file di esempio nè il link simbolico; era impostato PHP 7.4.*
Ringrazio se vorrete darmi qualche suggerimento e/o correggere la mia impostazione
Gianfranco
Buonasera @GianfrancoL ,
per spid-cie-php è raccomandato lâutilizzo di PHP 8, ma non dovrebbero esserci problemi anche con PHP 7.4, il requisito espresso in composer è >= 7.4.1
Secondo quanto da te indicato, spid-cie-php sarebbe installato su dominio login., quindi tutto il framework, compreso la generazione del metadata e gli endpoint che implementano il flusso SAML SPID sarebbero login..
Indicando come redirect_uri URL del tipo iss.*, a tali URL verranno inviati i dati dellâutente al termine dellâautenticazione.
In âmyserviceâ può essere indicata una qualsiasi stringa che costituirĂ il path sul quale risponderĂ il proxy che sarĂ quindi del tipo: https://login.ente.it/myservice.
Resto a disposizione se occorre ulteriore supporto.
Cordiali saluti e buona installazione.
Michele DâAmico
Grazie per la pazienza ed il supporto.
La EntityID è lâidentificativo del chiamante, che nel caso mio specifico è la pagina che implementa il flusso SAML, quindi login.dominioente.it (se non sbaglio).
Ma alla richiesta successiva âService Provider Domain, without wwwâ se inserisco dominioente.it viene generato lâerrore âWARNING: the EntityID must be related to organizationâs domainâ e richiede lâinserimento del dominio del service provider. In questo caso coincide con login.dominioente.it?
EDIT
ho inserito quanto proposto dallâinstallazione per il service provider domain, e la procedura ha completato tutte le fasi generando un errore sulla generazione della chiave privata
Generating a 3072 bit RSA private key
âŚ++
âŚ++
writing new private key to â/home/loginoin/spid-cie-php/vendor/simplesamlphp/simplesamlphp/cert/spid-sp.pemâ
problems making Certificate Request
139957683169168:error:0D06407A:asn1 encoding routines:a2d_ASN1_OBJECT:first num too large:a_object.c:108:
139957683169168:error:0B083077:x509 certificate routines:X509_NAME_ENTRY_create_by_txt:invalid field name:x509name.c:295:name=organizationIdentifier
Se apro la pagina di login questa mostra i tre pulsanti spid (post) spid (get) e cie che al passaggio successivo ovviamente genera lâerrore per chiave assente
âUncaught SimpleSAML\Error\UnserializableException: authsources[âcieâ]: Unable to load certificate/public keyâ
cordialmente
Gianfranco
LâEntityID deve rispettare quanto indicato dallâAvviso 37.
In particolare mi pare tu non stia indicando il protocollo http(s).
grazie per il dettaglio, non lâavevo trovato
Buongiorno,
tornando alla questione dellâerrore sulla generazione della chiave del certificato SSL, secondo quando leggo in post precedenti, ho verificato che la versine installata di openssl è la seguente
OpenSSL 1.0.2k-fips 26 Jan 2017
built on: reproducible build, date unspecified
platform: linux-x86_64
options: bn(64,64) md2(int) rc4(16x,int) des(idx,cisc,16,int) idea(int) blowfish(idx)
Deve essere obbligatoriamente attiva la versione 1.1.1 oppure câè un modo per generare la chiave con questa versione?
grazie
Gianfranco