gpt4 book ai didi

java - Java soap 中的 UserNameToken

转载 作者:行者123 更新时间:2023-11-29 08:19:30 27 4
gpt4 key购买 nike

我正在尝试使用来自 Netbeans 的 gSoap 生成的 wsdl。 Web 服务要求传入 UserNameToken。当我使用 SoapUI 中的 wsdl(有效)时,它会发送:

<wsse:Username>myname</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">mypass</wsse:Password>

但是,当我使用这样的处理程序(由 How do I add a SOAP Header using Java JAX-WS 引用)从 Netbeans 尝试它时:

            String prefix = "wsse";
String uri = "http://...wsssecurity...";

SOAPElement securityElem = factory.createElement("Security",prefix,uri);

SOAPElement UserNametokenElem = factory.createElement("UserNameToken",prefix,uri);

SOAPElement UsernameElem = factory.createElement("wsse:Username");
UsernameElem.addTextNode("myname");
SOAPElement PasswordElem = factory.createElement("Password");
PasswordElem.addTextNode("mypass");

UserNametokenElem.addChildElement(UsernameElem);
UserNametokenElem.addChildElement(PasswordElem);

securityElem.addChildElement(UserNametokenElem);
SOAPHeader header = envelope.addHeader();
header.addChildElement(securityElem);

它生成这样的 soap header :

    <wsse:Security xmlns:wsse="http://...wsssecurity...">
<wsse:UserNameToken xmlns:wsse="http://...wsssecurity...">
<Username xmlns="">myname</Username>
<Password xmlns="">mypass</Password>
</wsse:UserNameToken>
</wsse:Security>

这会导致网络服务回复身份验证错误。

因此我的问题是:

  1. 如何以正确的方式生成 UserNameToken(如 SoapUi 所做的那样)?
  2. 使用处理程序或外部 WSSE 库(如 Apache WSS4J)是否更好(谁能给我一些示例代码)

最佳答案

我最终成功地使用了 wss4j,并做了这样的事情:

            SOAPPart soappart = message.getSOAPPart();
SOAPEnvelope envelope = soappart.getEnvelope();
SOAPHeader header = envelope.getHeader();
WSSecHeader wsheader = new WSSecHeader();
wsheader.insertSecurityHeader(soappart);
WSSecUsernameToken token = new WSSecUsernameToken();
token.setPasswordType(WSConstants.PASSWORD_DIGEST);
token.setUserInfo("myuser", "mypass");
token.build(soappart, wsheader);

wss4j 有一些嵌套的依赖项,所以要小心。

关于java - Java soap 中的 UserNameToken,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1372466/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com