我正在尝试使用Apache CXF调用启用了WS Security的Web服务,但是在尝试实现将密码插入SOAP消息中的Callbackhandler时遇到了麻烦。我了解CXF中拦截器的概念,尤其是WSS4JOutInterceptor。
我正在使用Spring Boot,并且想将我的属性注入到Callbackhandler中,但是它不起作用。
我想要类似的东西:
public class UTPasswordCallback implements CallbackHandler {
@Autowired
MyProperties myProperties;
public void handle(Callback[] callbacks) throws IOException,
UnsupportedCallbackException {
for (Callback callback : callbacks) {
WSPasswordCallback wpc = (WSPasswordCallback) callback;
if (wpc.getIdentifier().equals(myProperties.getUserName())) {
wpc.setPassword(myProperties.getPassword());
return;
}
}
}
这是我尝试过的:
是否可以使用拦截器直接设置密码?对于用户名,我只需将其设置为:
props.put(WSHandlerConstants.USER, myProperties.getUserName());
是否存在类似的密码设置结构?还是我被迫使用Callbackhandler?