Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Attribute SessionIndex generated incorrectly for SPIDL2 and SPIDL3 AuthnRequests for test cases 31,109,110 #215

Open
carlobonamico opened this issue Jan 26, 2022 · 1 comment

Comments

@carlobonamico
Copy link

Problema analogo / correlato a #32, ma su altri casi di test.

Rilevato sulle versioni 1.7.1, 1.8.1, 1.8,2.

Se il Service Provider richiede come livello minimo SPIDL2, il validator invia una risposta di autenticazione positiva SPIDL2 contenente il campo SessionIndex.
Se l'applicazione implementa in maniera stringente la specifica

Nel caso di asserzioni emesse a seguito di richieste di autenticazione per il livello SPID 1 l’elemento  deve avere l’attributo SessionIndex specificante l’indice della sessione di autenticazione instaurata per l’utente presso il gestore dell’identità; tale elemento non dovrà essere presente nel caso di asserzioni emesse a seguito di richieste di autenticazione per i livelli SPID 2 e SPID 3.

il test fallisce in quanto viene negato l'accesso per risposte che invece sono di esito positivo.

Gli step necessari per riprodurre il problema sono:

  1. configurare i metadati del validator nell' applicazione
  2. inviare una richiesta di autenticaione SPIDL2 al validator indicando che la modalità di comparison sia "minimum"
        <AuthnContextClassRef xmlns="urn:oasis:names:tc:SAML:2.0:assertion">
            https://www.spid.gov.it/SpidL2
        </AuthnContextClassRef>
    </saml2p:RequestedAuthnContext>
  1. scegliere la Response 31, 109, 110

Nella GUI del Validator si vede che il campo sessionIndex è valorizzato e viene passato nella Response

        <saml:AuthnStatement AuthnInstant="2021-05-31T08:50:16Z" SessionIndex="_45ba6169-6fe9-4a4d-84b6-a8a201eeacb6">
            <saml:AuthnContext>
                <saml:AuthnContextClassRef>
                    https://www.spid.gov.it/SpidL2
                </saml:AuthnContextClassRef>
            </saml:AuthnContext>
        </saml:AuthnStatement>
@AleBrusati
Copy link

Buongiorno

Io e il mio team abbiamo rilevato un problema analogo.

Secondo le specifiche tecniche: https://docs.italia.it/italia/spid/spid-regole-tecniche/it/stabile/single-sign-on.html#esempio-di-authnrequest:~:text=higher%20digest%20algorithm.-,Assertion,-MUST, nel caso di "assertions" emesse a seguito di richieste di autenticazione per il livello SPID 1, l'elemento deve avere l'attributo SessionIndex che specifica l'indice della sessione di autenticazione stabilita per l'utente presso l'identity manager.

Questo elemento non deve essere presente nel caso di "assertions" emesse a seguito di richieste di autenticazione per i livelli SPID 2 e SPID 3.

Quando quindi eseguiamo il flusso con validazione, dovremmo aspettarci di non vedere alcun valore nell'attributo sessionIndex.

Ma in realtà otteniamo un valore e il flusso fallisce su questa convalida.

Per Esempio:

 <saml:AuthnStatement AuthnInstant="2022-07-17T11:49:32Z" SessionIndex="_6b189168-bbb7-4e27-b3f7-e9d6f0aa87a1">
           <saml:AuthnContext>
               <saml:AuthnContextClassRef>https://www.spid.gov.it/SpidL2</saml:AuthnContextClassRef>
           </saml:AuthnContext>
       </saml:AuthnStatement>

Se si esegue senza validazione, l'autenticazione passa.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants