WSSecSignature sign = new WSSecSignature();
sign.setUserInfo("16c73ab6-b892-458f-abf5-2f875f74882e", "security");
sign.setKeyIdentifierType(WSConstants.ISSUER_SERIAL);
Document doc = SOAPUtil.toSOAPPart(SOAPMSG);
SOAPConstants soapConstants =
WSSecurityUtil.getSOAPConstants(doc.getDocumentElement());
WSSecHeader secHeader = new WSSecHeader();
secHeader.insertSecurityHeader(doc);
List<WSEncryptionPart> parts = new ArrayList<WSEncryptionPart>();
WSEncryptionPart encP =
new WSEncryptionPart(
soapConstants.getBodyQName().getLocalPart(), // define the body
soapConstants.getEnvelopeURI(),
"");
parts.add(encP);
WSEncryptionPart encP2 =
new WSEncryptionPart(
"foobar",
"urn:foo.bar",
"");
parts.add(encP2);
sign.setParts(parts);
Document signedDoc = sign.build(doc, crypto, secHeader);
if (LOG.isDebugEnabled()) {
String outputString =
XMLUtils.PrettyDocumentToString(signedDoc);
LOG.debug(outputString);
}
List<WSSecurityEngineResult> results = verify(signedDoc);
QName fooName = new QName("urn:foo.bar", "foobar");
QName bodyName = new QName(soapConstants.getEnvelopeURI(), "Body");
WSSecurityUtil.checkAllElementsProtected(results, WSConstants.SIGN, new QName[]{fooName});
WSSecurityUtil.checkAllElementsProtected(results, WSConstants.SIGN, new QName[]{bodyName});
WSSecurityUtil.checkAllElementsProtected(
results,
WSConstants.SIGN,
new QName[]{bodyName, fooName}
);
WSSecurityUtil.checkAllElementsProtected(
results,
WSConstants.SIGN,
new QName[]{fooName, bodyName}
);
try {
WSSecurityUtil.checkAllElementsProtected(
results,
WSConstants.ENCR,
new QName[]{fooName, bodyName}
);
fail("Failure expected on a wrong action");
} catch (WSSecurityException ex) {
// expected
}
try {
QName headerName = new QName(soapConstants.getEnvelopeURI(), "Header");
WSSecurityUtil.checkAllElementsProtected(
results,
WSConstants.SIGN,
new QName[]{fooName, bodyName, headerName}
);