Skip to content
This repository has been archived by the owner on May 9, 2022. It is now read-only.

Fix #325 Allow XML signatures that include both X509Data and KeyValue elements #327

Open
wants to merge 1 commit into
base: dev
Choose a base branch
from

Conversation

lscorcia
Copy link
Contributor

@lscorcia lscorcia commented Mar 3, 2021

Corregge la issue #325 permettendo le signature XML che includono sia il certificato sia la chiave pubblica in tag separati. Questo comportamento riflette quanto effettivamente permesso dallo standard XML Signature e dalle specifiche SAML e allinea il controllo a quanto effettuato dal tool saml-spid-check.

E' stata anche aperta la PR XML-Security/signxml#169 per la correzione direttamente nella libreria python utilizzata nella validazione, ma questa PR risolve il problema per quanto riguarda questo progetto senza aver bisogno di attendere che venga mergeata la patch upstream.

@lscorcia lscorcia changed the base branch from master to dev March 3, 2021 20:46
@peppelinux
Copy link
Member

Ottimo come sempre @lscorcia!
Una piccola correzione anche qui così sblocchiamo la CI
https://github.com/italia/spid-testenv2/pull/327/checks?check_run_id=2025634313#step:5:9

@bfabio buona PR, che ne pensi?

@lscorcia
Copy link
Contributor Author

lscorcia commented Mar 3, 2021

Grazie @peppelinux , pipeline ok ora.

@bfabio
Copy link
Member

bfabio commented Mar 6, 2021

La patch upstream mi piace.

In questo workaround ci starebbe bene anche il messaggio esplicito che useremo solo X509Data in caso di presenza dei due elementi, in modo che lo sviluppatore sappia esattamente cosa sta succedendo.

Pseudocodice non testato:

try:
    self._verifier.verify(
        self._request.saml_request, x509_cert=self._cert)
        self._request.saml_request, x509_cert=self._cert)
except InvalidInput as e:
    if "Use verify(ignore_ambiguous_key_info=True)" in e.message:
        self._verifier.verify(
            self._request.saml_request, x509_cert=self._cert)
            self._request.saml_request, x509_cert=self._cert,
            ignore_ambiguous_key_info=True
        )
        logger.info("Found both X509Data and KeyValue in XML signature, using X509Data")
    else:
        raise e
[...]

Eventualmente potremmo portare il messaggio anche upstream.

@lscorcia
Copy link
Contributor Author

lscorcia commented Mar 8, 2021

PR aggiornata includendo il suggerimento di @bfabio , con piccole modifiche a seguito dei test in locale.

immagine

@bfabio
Copy link
Member

bfabio commented Mar 8, 2021

@lscorcia mi sa che le nuove modifiche non sono pushate :)

@lscorcia
Copy link
Contributor Author

lscorcia commented Mar 8, 2021

Così imparo a saltare il caffé... :-) Grazie @bfabio !

@bfabio bfabio self-requested a review March 8, 2021 20:17
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants