我确实编写了一个 Java 客户端并使用 WS-security 调用了一个 web 服务。为了生成类,我使用了轴。
基本上,我有一个类 Credentials,它有一个用户和密码,一个包含凭据的类标头,以及另一个包含标头的类 ServiceDispatcherRequest。
我试过这段代码
ServiceDispatcherServiceLocator service = new ServiceDispatcherServiceLocator();
ServiceDispatcherPortType port = service.getServiceDispatcherPortType();
ServiceDispatcherRequest request = new ServiceDispatcherRequest();
Credentials auth = new Credentials ("1", "xpto", "xpto");
Credentials[] credentials = new Credentials[10];
credentials[1]= auth;
Header header = new Header();
header.setCredentials(credentials);
request.setHeader(header);
ServiceDispatcherResponse response = port.serviceDispatcherOp(request);
但我收到以下错误
已针对安全性配置服务“服务”,但无法在消息上下文中找到任何 AuthenticationRequest。没有 AuthenticationRequest 无法进行身份验证。
所以我搜索了 AuthenticationRequest 类并尝试了这个:
Message message = MessageFactory.getInstance().getMessage();
AuthenticationRequest authRequest = new AuthenticationRequestImpl.Builder().username(user).password(pass.toCharArray()).build();
message.getContext().setContext(SecurityService.AUTH_REQUEST, authRequest);
但我不知道如何将 AuthenticationRequest 发送到网络服务。
如果有任何帮助,我将不胜感激。