Gestione sessioni e Single Logout

Ciao @marangiom,

conosco il problema e questo aspetto sarà corretto da un avviso, sto valutando l’impatto.

Umberto Rosini
Agenzia per l’Italia Digitale

Buongiorno @umbros,
sono andato avanti con gli sviluppi e sono giunto alla fase di test.

Se ho interpretato correttamente le disposizioni AGID, se l’utente fa un logout dal mio SP e aveva instaurato una sessione comune:

  • l’utente distrugge la sessione locale con il mio SP;
  • dopodiché tramite un POST o un redirect (come nel login) lo userAgent viene reindirizzato all’IDP che aveva creato la sessione di autenticazione con un parametro SAMLRequest contenente la LogoutRequest;
  • l’IDP si occupa di fare il logout dalle altre sessioni locali tramite SOAP o tramite lo UserAgent con altre redirect ai vari servizi in cui l’utente era loggato;
  • al termine della catena di redirect l’IDP fa un’ultima POST o redirect (sempre tramite UserAgent) al mio SP con un parametro contenente la SAMLResponse (logout completo o parziale)

Putroppo non riesco a testare questo meccanismo in quanto con gli SP che implementano SPIDL1 ottengo il seguente risultato:

  • il mio SP comunica la request tramite POST all’IDP di POSTE;
  • l’IDP di poste fa un redirect ad un terzo SP (ho fatto prove con diverse controparti, il risultato è sempre lo stesso) con la richiesta di Logout;
  • l’altro SP risponde 500 e la catena si interrompe.

Se invece non ci sono terze parti coinvolte l’IDP mi manda correttamente la Response.
A questo punto non so se sono gli altri SP che non implementano la logout o se c’è un errore nella request di Poste, in ogni caso la mia applicazione non ha controllo nella catena di redirect intermedi.

Sai dirmi se c’è qualche entity che ha implementato in modo completo e testabile tutto l’iter di logout?

Oppure se ho interpretato male le specifiche?

Grazie per l’assistenza!

Veramente nessuno è a conoscenza di qualche Service Provider che implementi il logout completo?

Ciao @Valerio_Mozzambani, mi era saltata la tua segnalazione,
il processo da te descritto è corretto. Premettendo che il singleLogout funziona solo su livello 1 SPID, spesso cade in partial logout.
Tutti gli IDP chiudono il giro ma se l’SP non risponde il logout è parziale.
Riguardo l’utilizzo di SOAP sto pensando di eliminarlo.
Direi che quindi il tuo giro è corretto.
Se vuoi faccio un giro e dei controlli.

Ciao

Umberto Rosini
Agenzia per l’Italia Digitale

Si, per favore!

Purtroppo se anche solo uno degli SP nella ‘catena’ restituisce 500, l’utente si trova una pagina bianca o con errore ed è portato a pensare che sia un malfunzionamento dell’applicazione che ha iniziato il logout.

Grazie!

Il problema dell’attributo NameQualifier è tracciato in questa issue:

Ciao @Valerio_Mozzambani,
mi fornisci i dati in pvt.

Grazie

Umberto Rosini
Agenzia per l’Italia Digitale

@umbros fatto, grazie a te!

Ciao @umbros, sei riuscito a dare un’occhiata?

Ciao @Valerio_Mozzambani,
come dicevo sto valutando una modifica sul singlelogout e nuove specifiche.

Appena ho novità aggiorno qui.

Ciao
Umberto Rosini
Agenzia per l’Italia Digitale

Grazie, allora per il momento dovrò disabilitare il logout anche sulla mia applicazione.

Salve,
sto facendo alcuni test sul mantenimento delle sessioni lato IDP (ovviamente con SpidLv1) e mi sembra che non vi sia un comportamento univoco lato IDP: una volta accreditati al primo servizio se si prova ad autenticarsi ad un altro servizio (sempre attraverso lo stesso IDP) ho osservato che alcuni IDP ripresentano la maschera di login (Username/password) mentre altri mostrano solamente la maschera per autorizzare il passaggio delle informazioni utente (mantengono cioè la sessione).
Vi è qualche regola o indicazione che gli IDP devono seguire sul mantenimento della sessione o la gestione e durata della stessa è demandata all’implementazione del fornitore dell’IDP ?
L’unico riferimento che ho trovato sulla sessione è l’avviso n.3.

Grazie

Salve, sto implementando anche io gestione del logout lato SP.
Ci sono stati più aggiornamenti sul tema?
L’idea di rimuovere SOAP per la richiesta di logout inviata dall’IDP è stata abbandonata?
Bisogna quindi prevedere il servizio SOAP di richiesta, e, immagino, la conseguente risposta sempre in SOAP?

Grazie.

Avrei un quesito. Immaginiamo di avere un metadata di un SP di livello 1 che fa riferimento a 2 o più servizi, con più elementi AssertionConsumerService e altrettanti SingleLogoutService. Il Login, grazie all’indice, avviene sempre perfettamente. Ma per il logout come procedere per segnalare all’Idp a quale indirizzo mandare la risposta? è possibile?
Grazie.

Buongiorno @umbros ,
volevo sapere se ci sono novità sull’aggiornamento delle specifiche per la gestione dell’elemento <Issuer> all’interno del <logoutRequest>.
Come indicato da @marangiom, con le attuali specifiche non è possibile utilizzare il SP Shibboleth per gestire il Single Logout.

Grazie

Salve.
Che io sappia non ci sono stati aggiornamenti.
Saluti

Buongiorno a tutti,
eseguendo il logout ottengo il messaggio “Verifica della firma fallita” però non ho capito perché.

Grazie in anticipo a tutti

Ho anche io questo problema, in particolare con posteid.
Ha cominciato a manifestarsi dopo l’aggiornamento a shibboleth 3, immagino che sia dovuto all’assenza di “NameQualifier” nell’issuer.

Vedo che è passato un po’ di tempo, mi chiedo se ci sono aggiornamenti.

Ma non basterebbe dire agli identity provider interessati di accettare le richieste anche senza NameQualifier?

Salve, consiglio di verificare che la LogoutRequest sia firmata, come la AuthnRequest, e con la stessa chiave utilizzata per firmare la AuthnRequest, il cui relativo certificato è dichiarato nel metadata registrato in federazione.

Michele D’Amico (@damikael)