我試圖從我的客戶端使用WSS4J添加密碼摘要WS-Security位到Web服務調用。我使用Axis的WSDL4J從WSDL生成了客戶機類,並遵循了使用WSS4J將WS-Security的「密碼摘要」標題添加到SOAP消息的指示信息,但返回錯誤消息「發現處理標題時發生錯誤」。添加調試消息,它看起來不像我的CallbackHandler被打到。我做錯了什麼嗎?或者我錯過了一些在WSS4J文檔中無法解釋的安裝程序?使用WSS4J返回「安全Web服務調用返回」處理<wsse:安全>標頭時發現錯誤
class CSProvider {
public CS get(CSService csService, URL url, String username)
throws ServiceException {
CS csPort = csService.getCSPort(url);
((Stub) csPort)._setProperty(WSHandlerConstants.ACTION, WSHandlerConstants.USERNAME_TOKEN);
((Stub) csPort)._setProperty(WSHandlerConstants.USER, username);
((Stub) csPort)._setProperty(UsernameToken.PASSWORD_TYPE, WSConstants.PW_DIGEST);
((Stub) csPort)._setProperty(WSHandlerConstants.PW_CALLBACK_CLASS, "com.example.namespace.to.PasswordCallbackHandler");
return csPort;
}
}
public class PasswordCallbackHandler implements CallbackHandler {
@Override
public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {
for (Callback callback : callbacks) {
if (callback instanceof WSPasswordCallback) {
((WSPasswordCallback) callback).setPassword(PasswordStore.getPassword());
} else {
throw new UnsupportedCallbackException(callback);
}
}
}
}