Привет я получил этот ErrorMessage:opensaml 3 подписи от ответа SAML является нулевым
net.shibboleth.utilities.java.support.logic.ConstraintViolationException: Signature was null
На проверке ответа SAML от Azure AD.
Для целей тестирования я сохранил файл ответов как XML и нашел тег:
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
<ds:SignatureMethod
Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256" />
<ds:Reference URI="#_97031c65-0139-4047-a416-9495df5d6ed7">
<ds:Transforms>
<ds:Transform
Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
<ds:DigestValue>
KMaFHRt8inqVYsMGKnAryKUTQUbYGPUDPxdvj6T08OQ=
</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>
.....
</ds:SignatureValue>
<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
<X509Data>
<X509Certificate>
....
</X509Certificate>
</X509Data>
</KeyInfo>
</ds:Signature>
я маршализацию ответ XML:
InitializationService.initialize();
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
documentBuilderFactory.setNamespaceAware(true);
DocumentBuilder docBuilder = documentBuilderFactory.newDocumentBuilder();
String content = new String(Files.readAllBytes(Paths.get("saml_response_azure.xml")));
Document document = docBuilder.parse(new ByteArrayInputStream(content.trim().getBytes()));
Element element = document.getDocumentElement();
Unmarshaller unmarshaller = XMLObjectProviderRegistrySupport.getUnmarshallerFactory().getUnmarshaller(element);
Response response = (Response) unmarshaller.unmarshall(element);
И ошибке отбрасывается на:
Signature signature = response.getAssertions().get(0).getSignature() // returns null
SAMLSignatureProfileValidator profValidator = new SAMLSignatureProfileValidator();
profValidator.validate(signature);
Можете ли вы предоставить весь ответ где-нибудь? Например, –
https://gist.github.com/Gobliins/26d8f760f120430eaeb29c223f2e436f Я заменил учетные данные некоей случайной информацией – Gobliins
КПП. в opensaml 2.6.x У меня не было этой проблемы – Gobliins