italia / spid-cie-php

Software Development Kit for easy SPID/CIE access integration with simplesamlphp - developed and mantained by Michele D'Amico @damikael
https://italia.github.io/spid-cie-php/
Apache License 2.0
82 stars 39 forks source link

SimpleSAML_Error_Error: UNHANDLEDEXCEPTION #45

Closed pippolascopa1 closed 5 years ago

pippolascopa1 commented 5 years ago

Ciao a tutti, ho eseguito l'installazione di spid-php con successo e configurato il metadata su https://idp.spid.gov.it:8080 (ambiente di test), ma quando provo ad autenticarmi con le credenziali di accesso di un utente di test, SimpleSAML mi restituisce una pagina di errore:

image

Qualcuno sa darmi qualche informazione? Potrei aver sbagliato qualcosa nella configurazione?

RoBYCoNTe commented 5 years ago

Mi accodo, ho anche io lo stesso problema. Installazione eseguita correttamente, raggiungo l'endpoit ma successivamente al login ottengo lo stesso messaggio di errore.

Oltretutto ho riscontrato enormi problemi nel "tentativo" di mappare un Service Provider e i suoi utenti TEST (spesso ottengo errore 500).

damikael commented 5 years ago

Ciao, l'eccezione sollevata "Missing AttributeStatement on Assertion" sta ad indicare che la Response SAML ricevuta dall'IdP non contiene attributi. Molto probabilmente dipende dal fatto che l'AttributeConsumingServiceIndex salvato nella configurazione del SimpleSAMLphp (nel file spid-php/vendor/simplesamlphp/simplesamlphp/config/authsources.php) durante la fase di installazione (di default 0) risulta diverso da quello registrato sull'IdP. Infatti su idp.spid.gov.it l'AttributeConsumingService viene registrato, tramite l'interfaccia di generazione del metadata (https://idp.spid.gov.it:8080) su index=1. E' possibile modificare l'AttributeConsumingServiceIndex del SimpleSAMLphp in config.php ad 1 per risolvere il problema, tuttavia verrà sollevata un'altra eccezione "AuthnContextClassRef was not valid." perchè, in generale, spid-php (tramite le patch applicate al SimpleSAMLphp) controlla in maniera molto più strict la conformità dell' implementazione SAML alle regole tecniche SPID, al fine di superare tutti i test previsti dalla verifica tecnica AgID. Comunque a breve anche l'IdP di test idp.spid.gov.it sarà uniformato per rispettare la modalità strict.

RoBYCoNTe commented 5 years ago

Ciao, confermo, effettuando le modifiche indicate (in realtà ho eseguito una nuova installazione, non son stato in grado di trovare il parametro indicato nel file config/config.php) ottengo questo nuovo errore (AuthnContextClassRef). Quindi per ora non è possibile utilizzare l'IdP di test per l'autenticazione? Cosa possiamo fare per superare questo ulteriore ostacolo?

damikael commented 5 years ago

È possibile utilizzare l'ambiente di test spid-testenv2. Dopo aver preparato un ambiente di test basato su spid-testenv2 occorre:

Durante l'installazione aggiungere la configurazione per IdP di test locale (durante l'installazione è possibile indicare l'url del metadata di spid-testenv2 per configurarlo come IdP in SimpleSAMLphp) e acconsentire a creare i file di esempio per l'integrazione.

myservice è il nome del servizio indicato durante l'installazione.

RoBYCoNTe commented 5 years ago

Buongiorno, innanzitutto grazie per il consueto supporto, vorrei evidenziare che seguendo la procedura e utilizzando un container cosi come descritto, purtroppo non riesco a completare il login per un errore che mi compare successivamente all'inserimento dei dati e all'inoltro delle credenziali verso il mio SP:

`SimpleSAML_Error_Error: UNHANDLEDEXCEPTION

1 www/_include.php:17 (SimpleSAML_exception_handler) 0 [builtin] (N/A) Caused by: SimpleSAML_Error_Exception: State not found for ID _154db3847fd0de8664caac086228df30b8732eaa29 2 /var/www/clients/client0/web4/web/setup/simplesamlphp/simplesamlphp/modules/saml/lib/Message.php:604 (sspmod_saml_Message::processResponse) 1 modules/saml/www/sp/saml2-acs.php:129 (require) 0 www/module.php:135 (N/A)`

Esistono suggerimenti a riguardo?

damikael commented 5 years ago

Buongiorno, l'errore riscontrato indica che il SP non riesce a recuperare la Request alla quale fa riferimento la Response. Accade quando il valore specificato nell'attributo inResponseTo della Response non viene trovato nella sessione del SP. Occorre controllare che la Response inviata sia conseguente alla Request e che la sessione del SP sia stata preservata. E' possibile, ad esempio, replicare l'errore, su un SP funzionante, nel modo seguente:

RoBYCoNTe commented 5 years ago

Buongiorno, purtroppo nonostante molteplici tentativi mi è impossibile riuscire a completare un login correttamente. La configurazione del server IdP è corretta, il service provider sembra essere configurato correttamente e, onestamente, non so quali altre verifiche sia opportuno fare.

Il problema può essere dovuto al fatto che sto lavorando su "sotto domini pubblici"? Nello specifico, ho configurato il service provider di test su questo URL: https://spid.its.engineering

Ho configurato l'IdP di test su questo URL: http://office.its.engineering

(Ho provato diverse configurazione: http<->https senza risultati). Provando ad effettuare un giro completo, si ottiene sempre il messaggio di errore precedentemente elencato.

RoBYCoNTe commented 5 years ago

Rettifico: non so per quale motivo ma, pur "funzionando correttamente" (vedo i file di sessione scritti correttamente all'interno della cartella temporanea del server), sembra che la gestione classica, cioè "phpsession", non stia funzionando correttamente.

Ho installato e sto utilizzando "memcache" che mi consente di poter proseguire nel login. Grazie in ogni caso per il supporto.

lellomaverick commented 5 years ago

Buonasera a tutti, mi collego a questo argomento ponendo la problematica che riscontro nel momento in cui l'utente è sulla pagina dell'IdP e, invece di proseguire con l'identificazione, sceglie di cliccare su Annulla. SAML va in eccezione e mi risponde con questo messaggio: SimpleSAML_Error_Error: UNHANDLEDEXCEPTION

1 www/_include.php:17 (SimpleSAML_exception_handler) 0 [builtin] (N/A) Caused by: Exception: Missing Issuer on Assertion 6 /var/www/html/spid/setup/simplesamlphp/saml2/src/SAML2/Message.php:196 (SAML2\Message::construct) 5 /var/www/html/spid/vendor/simplesamlphp/saml2/src/SAML2/StatusResponse.php:52 (SAML2\StatusResponse::construct) 4 /var/www/html/spid/vendor/simplesamlphp/saml2/src/SAML2/Response.php:24 (SAML2\Response::__construct) 3 /var/www/html/spid/setup/simplesamlphp/saml2/src/SAML2/Message.php:659 (SAML2\Message::fromXML) 2 /var/www/html/spid/vendor/simplesamlphp/saml2/src/SAML2/HTTPPost.php:76 (SAML2\HTTPPost::receive) 1 modules/saml/www/sp/saml2-acs.php:31 (require) 0 www/module.php:135 (N/A)

Non stiamo utilizzando l'ambiente di test menzionato precedentemente ma stiamo usando un ambiente già pubblico dove stiamo testando il servizio.

damikael commented 5 years ago

Buonasera @lellomaverick,

il service provider rifiuta la response dell'IdP, perchè, come indicato nell'eccezione (Caused by: Exception: Missing Issuer on Assertion), la response non contiente l'elemento Issuer all'interno dell'asserzione.

Come indicato nelle regole tecniche SPID, infatti, tale elemento è requisito obbligatorio: "deve essere presente l’elemento Issuer a indicare l’entityID dell’Identity Provider emittente"

Rif. https://www.agid.gov.it/sites/default/files/repository_files/circolari/spid-regole_tecniche_v1.pdf

pierluigizagaria commented 3 years ago

Salve, nel mio caso si verifica questo tipo di eccezione image

Sto usando spid-php con spid-saml-check ed ottengo l'errore una volta aver mandato la reponse al service provider. Sapreste come risolvere? Grazie