WSO2 ESB - Rampart 密码回调 class - 无法投射 WSPasswordCallback

WSO2 ESB - Rampart Password Callback class - WSPasswordCallback cannot be cast

我想在 WSO2 ESB 5.0.0 中使用 rampart 配置和 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 编译了我的源代码。什么都没有改变。

查看 "wso2esb-5.0.0/repository/components/plugins" 文件夹中可用的 wss4j 版本。看起来您在编译时使用了不同的版本,这可能会导致此类问题。

编译时尽量使用以下依赖版本的wss4j。

version=1.5.11.wso2v14
groupId=org.apache.ws.security.wso2
artifactId=wss4j

我从头开始创建了一个新的 callbackhandler 项目,并让它与几个 sidenodes 一起工作: - 我在主要 pom.xml:

中使用了以下依赖项
<dependency>
    <groupId>org.apache.ws.security</groupId>
    <artifactId>wss4j</artifactId>
    <version>1.5.11</version>
</dependency>

我将生成的“.jar”放入 repository/components/lib。此外,我在重新部署时从 repository/components/dropins 中删除了 .jar 以确保(ESB 在启动期间处理 .jar 时在那里创建一个文件)

我把整个项目都放在了here。使用 'mvn clean package' 构建。

祝你好运!如果你成功了,我想收到回复!