简体   繁体   English

Axis2“未找到WS-Security标头”

[英]Axis2 “No WS-Security header found”

I'm trying to use axis2, but there must be Security headers in message. 我正在尝试使用axis2,但消息中必须有Security标头。

I tried to add PEWSClientHeaderHandler class from this example , but it doesn't work (it works with default sun implementation, but not with axis2). 我尝试从该示例添加PEWSClientHeaderHandler类,但是它不起作用(它与默认的sun实现一起工作,但与axis2一起工作)。 The formed SOAP message looks like this: 形成的SOAP消息如下所示:

...
<soapenv:Header>
  <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"></wsse:Security>
</soapenv:Header>
...

UsernameToken, Username and Password tags are missing (but again, they are set in code and no exception when using sun). UsernameToken,Username和Password标记丢失(但同样,它们是在代码中设置的,使用sun时也不例外)。

Can anyone provide the simplest example of how such a header can be set in axis2? 谁能提供最简单的示例说明如何在axis2中设置此类标头?

Axis2 implementation has 1 little difference: Axis2实现有1个小的区别:

Standard Sun implementation: 标准的Sun实施:

SOAPEnvelope envelope = smc.getMessage().getSOAPPart().getEnvelope();
SOAPFactory soapFactory = SOAPFactory.newInstance();

SOAPHeader sh = envelope.addHeader();
SOAPElement wsSecHeaderElm = soapFactory.createElement("Security", AUTH_PREFIX, AUTH_NS);
SOAPElement userNameTokenElm = soapFactory.createElement("UsernameToken", AUTH_PREFIX, AUTH_NS);
SOAPElement userNameElm = soapFactory.createElement("Username", AUTH_PREFIX, AUTH_NS);
SOAPElement passwdElm = soapFactory.createElement("Password", AUTH_PREFIX, AUTH_NS);

userNameElm.addTextNode("username");
passwdElm.addTextNode("password");

userNameTokenElm.addChildElement(userNameElm);
userNameTokenElm.addChildElement(passwdElm);
wsSecHeaderElm.addChildElement(userNameTokenElm);
sh.addChildElement(wsSecHeaderElm);

Axis2 implementation: Axis2实现:

// the same as above

userNameTokenElm.addChildElement(userNameElm);
userNameTokenElm.addChildElement(passwdElm);
SOAPElement el = sh.addChildElement(wsSecHeaderElm); // addChildElement returns new SOAPElement!
el.addChildElement(userNameTokenElm);    

That's all 就这样

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM