我有一个WebSphere 5.x WSAD生成的Web服务客户端,它使用专用登录绑定和BasicAuth身份验证方法。使用WSAD Web服务客户端编辑器工具,我可以设置所需的安全设置和凭据,然后将其传播到ibm-webservicesclient-bnd / ext.xmi文件。在服务器上部署Web应用程序后,它可以正常工作。我可以通过管理控制台访问Websphere上的这些凭据,转到:
Enterprise Applications > *MyApp* > Web Module > *MyModule* > Web Services: Client Security Bindings > Request Sender Binding > Login Binding
但是,我需要以编程方式从Java逻辑设置这些凭据。以下看来似乎不够:
((javax.xml.rpc.Stub) service)._setProperty(javax.xml.rpc.Stub.USERNAME_PROPERTY, "user");
((javax.xml.rpc.Stub) service)._setProperty(javax.xml.rpc.Stub.PASSWORD_PROPERTY, "password");
由于我收到以下回复:
WSEC5075E: No security token found which satisfies any one of AuthMethods.
是否可以在生成的客户端的Java逻辑中设置所需的凭据?
如果没有,也许这可以通过以低级方式访问调用来完成,可能手动将所需的安全元素输入到SOAP消息头中?
提前谢谢!
答案 0 :(得分:2)
我设法通过生成Axis Web Service客户端并实现我自己的org.apache.axis.handlers.BasicHandler来修复调用来解决问题。处理程序基于axis-wsse库中的WsseClientHandler。
所需的逻辑放在Stub文件中,如下所示:
_call.setUsername("username");
_call.setPassword("password");
_call.setProperty(WsseClientHandler.PASSWORD_OPTION,
WsseClientHandler.PASSWORD_CLEARTEXT);
_call.setClientHandlers(new WsseClientHandler(), null);