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

AuthnRequest Signature validation check error #178

Open
MCalvano opened this issue Feb 10, 2025 · 5 comments
Open

AuthnRequest Signature validation check error #178

MCalvano opened this issue Feb 10, 2025 · 5 comments
Labels
help wanted Extra attention is needed question Further information is requested

Comments

@MCalvano
Copy link

Implementando SPID per una PA con già un metadata, abbiamo per errore utilizzato il certificato con cui è stato firmato il metadata EntityDescriptor.Signature.KeyInfo.X509Data.X509Certificate anziché il certificato per la verifica della request EntityDescriptor. SPSSODescriptor.KeyDescriptor.KeyInfo.X509Data.X509Certificate.

Utilizzando il validator, insieme a @damikael ci siamo accorti che in caso di request inviata in Binding: HTTP-Redirect ci viene correttamente segnalato l'errore AuthnRequest Signature validation mentre se si invia la request Binding: HTTP-POST il check passa senza problemi.

Image

Secondo @damikael in caso di Binding: HTTP-POST la firma della AuthnRequest viene verificata con il certificato auto contenuto e non con il certificato dichiarato nel metadata.

@peppelinux
Copy link
Member

I certificati utilizzati sono quelli prelevati dal metadata, quelli contenuti nella richiesta non vengono considerati

vedi qui se riesci a capire quali elementi vadano considerati nella tua analisi
https://github.com/italia/spid-sp-test/blob/main/src/spid_sp_test/authn_request.py#L299

@peppelinux
Copy link
Member

poi mi chiedo come mai la verifica della firma della authn request ricada tra gli "extra"

@damikael
Copy link
Member

poi mi chiedo come mai la verifica della firma della authn request ricada tra gli "extra"

Ciao @peppelinux , la verifica della firma è inserita sia nel set di test "Strict" che in quello "Extra", in ogni caso è un'impostazione con cui viene richiamato spid_sp_test da spid-saml-check

spid_sp_test --metadata-url file://.../sp-metadata.xml --authn-url file://.../authn-request.dump -rf json -o ...
spid_sp_test --metadata-url file://.../sp-metadata.xml --authn-url file://.../authn-request.dump -rf json -o ... --extra

@peppelinux
Copy link
Member

Il comando è qui per HTTP POST
https://github.com/italia/spid-sp-test/blob/main/src/spid_sp_test/authn_request.py#L405

--pubkey-cert-pem risulta commentato per ricrdo che all'epoca fosse stato riscontrato inconsistente all'uso.

un test con una firma errata è qui proposto
https://github.com/italia/spid-sp-test/blob/main/tests/test_02_authn.py#L38

partendo da questo esempio o da altro è possibile generare una authn request firmata con una chiave diversa rispetto a quella configurata nel metadata, ed evidenziare l'errore. Dopodiché la PR dovrebbe includere un eventuale integrazione nel comando xmlsec1 per la risoluzione definitiva

@peppelinux peppelinux added help wanted Extra attention is needed question Further information is requested labels Feb 10, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
help wanted Extra attention is needed question Further information is requested
Projects
None yet
Development

No branches or pull requests

3 participants