Opensaml: выходные данные подписи с пустым ссылочным URI - PullRequest
0 голосов
/ 10 мая 2018

Как я могу установить URI Ссылочного узла в SignedInfo, в разделе Подпись. Почему он не выбирает значение идентификатора из объекта Response при его подписании?

Вот мой код:

QName respQName = new QName(SAMLConstants.SAML20P_NS,Response.DEFAULT_ELEMENT_LOCAL_NAME, "samlp");
Response resp = new ResponseBuilder().buildObject(respQName);
resp.setID(uuid);
//resp.set .......

Signature signature = (Signature) Configuration.getBuilderFactory().getBuilder(Signature.DEFAULT_ELEMENT_NAME)              .buildObject(Signature.DEFAULT_ELEMENT_NAME);
signature.setSigningCredential(signingCredential);
signature.setKeyInfo(new SAMLResponseGenerator().getKeyInfo(signingCredential, null, uuid));
assertion.setSignature(signature);
resp.getAssertions().add(assertion);
Signer.signObject(signature);
marshallerFactory = Configuration.getMarshallerFactory();
Element responseTxt = marshallerFactory.getMarshaller(resp).marshall(resp);
System.out.println(XMLHelper.nodeToString(responseTxt));

Чего мне не хватает?

1 Ответ

0 голосов
/ 11 мая 2018

В случае, если кто-то сталкивается с той же проблемой: ссылка URI, кажется, появляется только тогда, когда фактический объект ответа маршалируется и затем подписывается. Только подписать его без сортировки недостаточно. В моем случае я шифрую утверждение после его подписания.

Element  responseTxt = new ResponseMarshaller().marshall(resp);  
Signer.signObject(signature);                  
EncryptedAssertion encryptedAssertion = getEncryptedAssertion(resp.getAssertions().get(0), credential);
resp.getAssertions().clear();
resp.getEncryptedAssertions().add(encryptedAssertion);
...