-
Notifications
You must be signed in to change notification settings - Fork 38
InvalidInput - Both X509Data and KeyValue found. Use verify(ignore_ambiguous_key_info=True) to ignore KeyValue and validate using X509Data only. #325
Comments
Ciao Vincenzo, |
Si ho appena risolto. Il problema era dato dall'sdk di spring che aggiungeva entrambi gli elementi ( Per chi stesse utilizzando lo stesso sdk, si deve commentare una linea. public Signature getSignature() {
XMLObjectBuilderFactory builderFactory = Configuration.getBuilderFactory();
Signature signature = (Signature) builderFactory.getBuilder(Signature.DEFAULT_ELEMENT_NAME).buildObject(Signature.DEFAULT_ELEMENT_NAME);
signature.setSigningCredential(getCredential());
signature.setSignatureAlgorithm(SignatureConstants.ALGO_ID_SIGNATURE_RSA_SHA256);
signature.setCanonicalizationAlgorithm(SignatureConstants.ALGO_ID_C14N_EXCL_OMIT_COMMENTS);
KeyInfo keyInfo = (KeyInfo) builderFactory.getBuilder(KeyInfo.DEFAULT_ELEMENT_NAME).buildObject(KeyInfo.DEFAULT_ELEMENT_NAME);
KeyStore ks = getKeyStore();
try {
X509Certificate certificate = (X509Certificate) ks.getCertificate(certificateAliasName);
//KeyInfoHelper.addPublicKey(keyInfo, certificate.getPublicKey()); // campo KeyData
KeyInfoHelper.addCertificate(keyInfo, certificate); // campo X509Data
}
catch (CertificateEncodingException e) {
log.error("buildAuthenticationRequest :: " + e.getMessage(), e);
}
catch (KeyStoreException e) {
log.error("buildAuthenticationRequest :: " + e.getMessage(), e);
}
catch (IllegalArgumentException e) {
log.error("buildAuthenticationRequest :: " + e.getMessage(), e);
}
signature.setKeyInfo(keyInfo);
return signature;
} |
Grande, Ti prego apri una issue sul progetto spring dedicato a spid e referenzia questa issue, se puoi fai una pull request sul progetto per la risoluzione di questa anomalia |
Buongiorno, Specifica XML Signature alla mano non è vietato avere due rappresentazioni dello stesso certificato (https://tools.ietf.org/html/rfc3075#page-28), anzi, l'indicazione è recommended. Questo errore è una forzatura dell'autore della libreria tutta frutto della sua inventiva. Considerato anche che questo problema esiste solo per le implementazioni Python, e infatti non si verifica con spid-saml-validator, credo che sarebbe opportuno utilizzare il flag Che ne pensate? |
Ho aperto la PR XML-Security/signxml#169 sul repo della libreria. Se l'autore me la accetta potremo semplicemente aggiornare la libreria al prossimo rilascio, sennò preparerò una PR per aggiungere qui il parametro ignore_ambiguous_key_info alla chiamata. |
Salve,
sto utilizzando l'SDK di Spring per fare dei test.
Quando invio la richiesta ricevo questo errore:
signxml.exceptions.InvalidInput: Both X509Data and KeyValue found. Use verify(ignore_ambiguous_key_info=True) to ignore KeyValue and validate using X509Data only.
La richiesta che provo ad inviare è questa:
The text was updated successfully, but these errors were encountered: