italia / spid-saml-check

Tool di verifica implementazione SPID SAML
European Union Public License 1.2
71 stars 59 forks source link

Funzionamento in http #229

Closed nicofari closed 1 year ago

nicofari commented 1 year ago

è possibile configurare spid-saml-check (nella modalità DEMO) in locale per funzionare in http? Stavo cercando di utilizzarlo per testare la mia applicazione in locale (basata su spid-php quindi su SimpleSamlPhp). Ho quindi due container docker che, se esposti in https, funzionano senza problemi. Mi è stato però richiesto di configurarli senza https. Se metto i http l'applicazione e lascio in https spid-saml-check ho un errore di perdita di sessione. Leggendo questo articolo: https://simplesamlphp.org/docs/1.19/simplesamlphp-nostate.html

mi è parso di capire che possa esserci un problema, a livello di cookie, se idp e applicazione sono misti http - https. Per cui pensavo di provare a passare spid-saml-check in http. Ho provato banalmente a esporre la porta 80 nel dockerfile, ma non funziona, a runtime ritorna sempre in https. è una cosa possibile o deve essere https per forza?

grazie mille

nicofari commented 1 year ago

Forse ho trovato. Dipende da questa configurazione in spid-validator/config/server.json forse? "port": 8443, "useProxy": false, "useHttps": true,

faccio una prova

damikael commented 1 year ago

Salve @nicofari , esatto, per eseguire l'applicativo in http puoi editare le configurazioni in server.json. Riguardo al problema di perdita della sessione su spid-php assicurati di avere l'ultima versione di spid-php e prova a configurare la registrazione delle sessioni di simplesamlphp su database invece che su phpsession: https://simplesamlphp.org/docs/stable/simplesamlphp-maintenance.html

nicofari commented 1 year ago

Grazie @damikael

nicofari commented 1 year ago

Sembra che il problema non dipenda dal fatto di avere anche l'idp in http. Ho già configurato le sessioni su db: 'session.cookie.secure' => false, 'session.cookie.samesite' => 'None', 'store.type' => 'sql', 'store.sql.dsn' => 'sqlite:/tmp/simplesamlphp.sq3',

quello che vedo, nel log, è questo errore: Sep 16 09:13:24 simplesamlphp DEBUG [b6dc9c2634] Session: 'service' not valid because we are not authenticated. Sep 16 09:13:24 simplesamlphp DEBUG [b6dc9c2634] Saved state: '_5b3c40a41273ef41c78a11b1b8acdccd5c5b0d961a' Sep 16 09:13:24 simplesamlphp DEBUG [b6dc9c2634] Sending SAML 2 AuthnRequest to 'http://spid-saml-check.local:8010/demo'

Dice di aver salvato lo stato ma non è vero. Forse la riga prima che dice "service" not valid spiega il problema?

Il problema si presenta quando arriva la POST dall'IDP:

Sep 16 09:13:43 simplesamlphp DEBUG [c7b2ba65f2] Loading state: '_5b3c40a41273ef41c78a11b1b8acdccd5c5b0d961a' Sep 16 09:13:43 simplesamlphp ERROR [c7b2ba65f2] SimpleSAML\Error\Error: UNHANDLEDEXCEPTION Sep 16 09:13:43 simplesamlphp ERROR [c7b2ba65f2] Backtrace: Sep 16 09:13:43 simplesamlphp ERROR [c7b2ba65f2] 1 /var/www/html/vendor/simplesamlphp/simplesamlphp/www/_include.php:17 (SimpleSAML_exception_handler) Sep 16 09:13:43 simplesamlphp ERROR [c7b2ba65f2] 0 [builtin] (N/A) Sep 16 09:13:43 simplesamlphp ERROR [c7b2ba65f2] Caused by: Exception: State not found for id _5b3c40a41273ef41c78a11b1b8acdccd5c5b0d961a

dice di non trovare lo stato che, stando al log, avrebbe dovuto aver salvato prima.

Ho spid-php 3.8.3 su github dice latest 3.10 ma l'ultima che mi vede packagist è questa.

Ho provato a scrivere anche al repo di SimpleSamlPhp, vediamo se mi rispondono.. grazie

damikael commented 1 year ago

Prova impostando: 'session.cookie.secure' => true

nicofari commented 1 year ago

ma quello non finisce per richiedere https? comunque provo..

nicofari commented 1 year ago

no cookie.secure in http deve essere false altrimenti dà l'errore

The configuration is invalid: Setting secure cookie on plain HTTP is not allowed.

nicofari commented 1 year ago

Chiudo la issue in quanto non si tratta di un problema di spid-saml-check. Grazie.