我的要求是使用传入的用户名,密码来实现生成ws安全标头的方法。
所以有人可以通过提供用户名和密码从xslt调用我的方法,我的方法应该能够返回安全头,并且他们可以在soap请求中附加这个安全头来调用第三方Web服务。
我正在寻找可以通过获取用户名和密码来生成soap安全标头的api。
我发现需要端口和服务信息的WSS4JOutInterceptor,但在我的情况下,我只有2个参数(UserName,PassWord)。
请建议是否有任何其他api /方法,而不是创建SoapEnvelop并添加安全元素?
<oas:Security xmlns:oas="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"> <oas:UsernameToken xmlns:oas1="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" oas1:Id="UsernameToken-1"> <oas:Username> lakshmi </oas:Username><oas:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">MTQ2NzA5NTg3MjM5Mw==</oas:Nonce> <oas:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest">uSlFkVhDynZoCXFojlM1w4UrJYY=</oas:Password><oas1:Created>2016-06-28T06:37:52.425Z</oas1:Created></oas:UsernameToken></oas:Security>
答案 0 :(得分:1)
您可以使用WSS4J生成安全标头
public String nodeToString(Node node) throws TransformerFactoryConfigurationError, TransformerException {
StringWriter sw = new StringWriter();
Transformer t = TransformerFactory.newInstance().newTransformer();
t.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
t.setOutputProperty(OutputKeys.INDENT, "yes");
t.transform(new DOMSource(node), new StreamResult(sw));
return sw.toString();
}
要将节点打印为String,请使用此
String securityHeader = nodeToString(buildSecurityHeader(username,password));
以这种方式使用
WSSecUsernameToken
结果将与此类似。在您方便时参数化WSSecHeader
和<wsse:Security xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" soapenv:mustUnderstand="1">
<wsse:UsernameToken wsu:Id="UsernameToken-39dba965-c4a8-4b2d-826e-ade8c0931f3f">
<wsse:Username>username</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest">BxJH0G5PzPfBFbBGimF0bq3vjsY=</wsse:Password>
<wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">iaO1xilL6qfuN2apbSdfPQ==</wsse:Nonce>
<wsu:Created>2016-06-30T07:17:26.552Z</wsu:Created>
</wsse:UsernameToken>
</wsse:Security>
代码
TextBox