我正在使用axis 2 webservice客户端。
对webservice的第一次https调用会抛出一个异常,并显示以下消息:“消息不包含有效的安全元素”。
我认为问题可能是安全模式:也许它必须是消息级安全性。在这种情况下,如何在轴上配置它?。
代码:
System.setProperty("javax.net.ssl.keyStore", jksFile);
System.setProperty("javax.net.ssl.keyStorePassword", jksPassword);
MyServicePortProxy proxy = new MyServicePortProxy();
Stub stub = (Stub) proxy.getMyServicePort();
proxy.setEndpoint(endpoint);
stub.setUsername(username);
stub.setPassword(password);
// throws exception with the above message:
proxy.serviceMethod(...);
答案 0 :(得分:1)
看看http://ws.apache.org/wss4j/package.html我们必须定义一个client-config.wsdd,它告诉axis包含用户名/密码(如果它是你正在使用的ws-security)。我对不同的标准以及将它们区分开来有点弱。
答案 1 :(得分:1)
您的XML服务定义中可能需要创建服务策略 - [http://schemas.xmlsoap.org/ws/2004/09/policy/]
看看这些文章:
http://www.javaranch.com/journal/200603/Journal200603.jsp#a2 http://www.javaranch.com/journal/200709/web-services-authentication-axis2.html
答案 2 :(得分:1)
注意你的时钟偏差。如果客户端提供的安全元素中的时间戳从服务器的角度来看过去或过去都太远,它可能会使用此消息拒绝它。