italia / spid-testenv2

New test Identity Provider for SPID
GNU Affero General Public License v3.0
35 stars 38 forks source link

SSO non disponibile tra distinti SP #105

Open marcoz-tsn opened 6 years ago

marcoz-tsn commented 6 years ago

Lo scenario è composto dall'accoppiata tra spid-dotnet-sdk come SP e spid-testenv2 come IdP. I due siti web dotnet (mappati in IIS), diciamo A e B, sono ciascuno un Service Provider con proprio dominio e coppia di chiavi, registrato nello spid di test.

Il comportamento desiderato è il seguente: 1 - accedo al sito A (senza cookie di sessione) -> vengo reindirizzato allo spid di test 2 - in spid non ho una sessione, quindi viene richiesta l'autenticazione 3 - mi autentico e vengo reindirizzato, con un dato insieme di asserzioni, al sito A (in cui viene impostato un proprio cookie di sessione) 4 - accedo al sito B (senza cookie di sessione) -> vengo reindirizzato allo spid di test 5 - in spid ho già una sessione -> NON deve essere richiesta nuovamente l'autenticazione 6 - vengo reindirizzato, con un insieme di asserzioni eventualmente diverso, al sito B (in cui viene impostato un proprio cookie di sessione)

Da quanto ne so, affinché il punto 5 si realizzi è necessario che l'IdP nel compiere il passaggio 3 imposti a sua volta un cookie (quindi legato al proprio dominio) in modo che il browser eseguendo il punto 4 glielo invii. Il punto è che via Fiddler non vedo traccia di alcun cookie gestito dallo spid di test, e quindi sono costretto a riautenticarmi al sito B, vanificando uno dei maggiori benefici di SAML.

E' possibile intervenire in qualche modo?

simevo commented 6 years ago

ti consiglio di leggere (se non l'hai già fatto) l'Avviso n. 3 - Chiarimenti sulla gestione delle sessioni SSO e meccanismo di Single logout qui: https://www.agid.gov.it/it/piattaforme/spid/avvisi-spid

come alternativa potreste operare un solo SP e gestire i due servizi A e B come due Assertion Consumer Services dentro l'SP, vedi Avviso n. 6 - Note sul dispiegamento di SPID presso i gestori dei servizi

marcoz-tsn commented 6 years ago

grazie per la dritta, è stata una lettura interessante che mi ha confermato però quanto sospettavo, ovvero che l'attuale implementazione SAML2 di SPID non supporta il SSO tra diversi domini, ovvero per esempio tra diverse amministrazioni

sai indicarmi se è previsto il supporto in futuro? grazie

alranel commented 6 years ago

Buongiorno @marcoz-tsn, il comportamento che descrivi è quanto è effettivamente previsto da SPID. La sessione di Single Sign-On presso l'Identity Provider dura 30 minuti (per il solo livello 1), durante i quali l'Identity Provider non chiede nuovamente le credenziali ma chiede solo l'autorizzazione a trasferire gli attributi. Nel testenv2 la sessione SSO non è stata implementata, essendo lo strumento finalizzato alla validazione delle implementazioni. Più avanti possiamo pensare di introdurre questo comportamento per simulare al meglio quello che avviene in produzione.

marcoz-tsn commented 6 years ago

Grazie @alexrj, sarebbe, penso, davvero una cosa utile avere questa feature in test, proprio per equiparare l'ambiente a quello di produzione. Attendo fiducioso

RobertoAscione commented 3 years ago

ciao ci sono novità rispetto l'implementazione di questa funzionalità (SSO tra distinti SP)? grazie

peppelinux commented 3 years ago

Qui ad oggi dovremmo considerare una gestione di SameSite cookie per ottenere il SSO tra entità cross domain