italia/spid-django

Error StatusInvalidAuthnResponseStatement

infoFactorySRL opened this issue · 5 comments

Buongiorno,
volevo segnalare un errore che si verifica quando provo a testare il login con 2Spid test env2" selezionando come "Opzioni avanzate " la voce "Destination errata".

L'errore si riscontra nella pagina: spid/acs/ ed è il seguente

Exception Type: StatusInvalidAuthnResponseStatement
Exception Value: The Authn Response Statement is not valid

che ha origine da questa chimata session_info = response.session_info()

e credo sia in qualche modo correlato a questo IdentityPython/pysaml2#763

esatto, quella PR infatti l'ho creata io.

pySAML2 di default produrrebbe un eccezione di IndexError mentre con quel PR ottieni una eccezione specializzata.
Di fatto con Destination Errata il SP non dovrebbe dare seguito.

Dimmi cosa ne pensi

Forse per consistenza con le altre eccezioni gestite si potrebbe generare un errore 403 ?
In modo da gestire anche questo caso con la medesima pagina di errore.

Hai ragione, dovrebbe ricadere qui
https://github.com/knaperek/djangosaml2/blob/033b16c6ee626bcf485e9b06bed95b6eacaa2a30/djangosaml2/views.py#L354

E quindi sarebbe opportuno fare una PR per questa eccezione specializzata ma la relativa PR non è stata ancora unita in pysaml2 e non posso chiedere agli utenti di djangosaml2 di usare il mio fork di pysaml2.

Credo che per adesso dovremo inventarci un workaround, sentiti libero di proporre la soluzione che ritieni opportuna

buone notizie, la PR su pysaml2 è stata unita.
IdentityPython/pysaml2#763

attendo la prossima release prima di fare una successiva release di djangosaml2.
Alla fine questa issue sarebbe relativa a djangosaml2 e non a spid-django ma curo le release di entrambi, quindi ... La gestiamo anche così ;)

risolto dallo spid_validator, qui:
73e3c04

nei log adesso leggiamo

diversodaassertionconsumerserviceurl not in ['http://localhost:8000/spid/acs/']
SAML Response validation error: Destination is not valid: diversodaassertionconsumerserviceurl not in ['http://localhost:8000/spid/acs/']