Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wso2 Rampart在动态加载策略时忽略密码回调处理程序_Wso2_Axis2_Wso2esb_Rampart - Fatal编程技术网

Wso2 Rampart在动态加载策略时忽略密码回调处理程序

Wso2 Rampart在动态加载策略时忽略密码回调处理程序,wso2,axis2,wso2esb,rampart,Wso2,Axis2,Wso2esb,Rampart,我试图在Axis2执行期间实现动态策略加载。放在Axis2流“安全”阶段之前的另一个模块负责确定需要应用的策略,并根据需要加载它。下面是加载策略的处理程序中的几行代码 ... RampartConfig rampartConfig = new RampartConfig(); ... rampartConfig.setPwCbClass("com.example.security.callback.UsernamePasswordCallbackHandler"); ... Policy po

我试图在Axis2执行期间实现动态策略加载。放在Axis2流“安全”阶段之前的另一个模块负责确定需要应用的策略,并根据需要加载它。下面是加载策略的处理程序中的几行代码

...
RampartConfig rampartConfig = new RampartConfig();
...
 rampartConfig.setPwCbClass("com.example.security.callback.UsernamePasswordCallbackHandler");
...
Policy policy = PolicyEngine.getPolicy(policyElement);
policy.addAssertion(rampartConfig);
messageContext.getOptions().setProperty(RampartMessageData.KEY_RAMPART_POLICY, policy);
....
该策略如下所示

<wsp:Policy wsu:Id="UsernameToken" xmlns:wsu=
    "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
        xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
<wsp:ExactlyOne>
    <wsp:All>
        <sp:SupportingTokens
                xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702">
            <wsp:Policy>
                <sp:UsernameToken sp:IncludeToken=
                                          "http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/AlwaysToRecipient">
                    <wsp:Policy>
                        <sp:HashPassword/>
                    </wsp:Policy>
                </sp:UsernameToken>
            </wsp:Policy>
        </sp:SupportingTokens>
    </wsp:All>
</wsp:ExactlyOne>
启动后,策略立即成功加载并到达密码回调处理程序。但是,如果您尝试使用您在请求中输入的任何凭据再次完成请求,它将通过而不是返回错误

这意味着对于secong和进一步请求,rampart会忽略密码回调处理程序

我使用的是WSO2 ESB 4.8.0 ant,这很烦人,因为它不符合纯Axis2/Rampart文档的要求

如果有人能帮上忙,那就太好了,因为我现在正被这个问题困扰着

谢谢, 弗拉基米尔