WSO2 ESB-Rampart密码回调类-WSPasswordCallback无法强制转换

时间:2018-12-25 20:22:20

标签: wso2 wso2esb ws-security wss4j

我想在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编译了我的源代码。什么都没改变。

2 个答案:

答案 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”进行构建。

祝你好运!如果您成功了,我想听听!