我有一个由 WebSphere 5.x WSAD 生成的 Web 服务客户端,它使用带有 BasicAuth 身份验证方法的专用登录绑定(bind)。使用 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 消息 header 中?
提前谢谢您!
最佳答案
我通过生成 Axis Web 服务客户端并实现我自己的 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);
关于java - 以编程方式为 WebSphere 5.x 请求发送方绑定(bind) BasicAuth Web 服务客户端设置凭证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8239352/