我想在WSO2 ESB 5.0.0中使用垒配置和Password Callback class调用安全的后端服务
package com.yenlo.wso2.services;
import org.apache.ws.security.WSPasswordCallback;
import javax.security.auth.callback.Callback;
import javax.security.auth.callback.CallbackHandler;
import javax.security.auth.callback.UnsupportedCallbackException;
import java.io.IOException;
public class PWCBHandler implements CallbackHandler {
public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {
WSPasswordCallback pc = (WSPasswordCallback) callbacks[0];
// set the password for our message.
pc.setPassword("YENLO_TEST");
}
}
当我致电代理服务时,会发生此错误:
org.apache.ws.security.WSPasswordCallback cannot be cast to org.apache.ws.security.WSPasswordCallback
我已经用wss4j 1.6.17和1.5.12编译了我的源代码。什么都没改变。
答案 0 :(得分:0)
查看“ wso2esb-5.0.0 / repository / components / plugins”文件夹中的wss4j可用版本。看起来您在编译时使用的是其他版本,这可能会导致这种问题。
尝试在编译时将wss4j与以下依赖项版本一起使用。
version=1.5.11.wso2v14
groupId=org.apache.ws.security.wso2
artifactId=wss4j
答案 1 :(得分:0)
我从头开始创建了一个新的callbackhandler项目,并使其与几个sidenode一起工作: -在主要pom.xml中使用了以下依赖项:
<dependency>
<groupId>org.apache.ws.security</groupId>
<artifactId>wss4j</artifactId>
<version>1.5.11</version>
</dependency>
我将生成的“ .jar”放入存储库/ components / lib中。另外,在进行重新部署时,我从存储库/组件/ dropins中删除了.jar(ESB在处理.jar时在启动期间在其中创建了文件)
我已经放置了整个项目here。使用“ mvn clean package”进行构建。
祝你好运!如果您成功了,我想听听!