Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.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
Java 在SpringWS(wss4j)中不使用SoapAction头进行解密?_Java_Spring_Web Services_Spring Security_Spring Ws - Fatal编程技术网

Java 在SpringWS(wss4j)中不使用SoapAction头进行解密?

Java 在SpringWS(wss4j)中不使用SoapAction头进行解密?,java,spring,web-services,spring-security,spring-ws,Java,Spring,Web Services,Spring Security,Spring Ws,我的主要问题是: 加密soap消息时,PayloadRootAnnotationMethodEndpointMapping无法映射soap消息,因为安全侦听器还没有时间对其进行解密。解决方案是将@PayloadRoot替换为@SoapAction 当收到soap消息时,SpringWS首先调用PayloadRootAnnotationMethodEndpointMapping,然后调用SoapActionAnnotationMethodEndpointMapping @Endpoint publ

我的主要问题是:

加密soap消息时,
PayloadRootAnnotationMethodEndpointMapping
无法映射soap消息,因为安全侦听器还没有时间对其进行解密。解决方案是将
@PayloadRoot
替换为
@SoapAction

当收到soap消息时,SpringWS首先调用
PayloadRootAnnotationMethodEndpointMapping
,然后调用
SoapActionAnnotationMethodEndpointMapping

@Endpoint
public class assignedSubscriberNumberNotify {
    private static final String NAMESPACE_URI = "http://test.aek.seavus.com/";

    @PayloadRoot(namespace = NAMESPACE_URI, localPart = "ToOperatorChangeInASSNNotify")
    @SoapAction("http://www.test.si/toOperatorChangeInASSNNotify")
    @ResponsePayload
    public void toOperatorChangeInASSNNotify(@RequestPayload ToOperatorChangeInASSNNotify request){

    }
}
如果客户端无法将SoapAction添加到头中,如何解密请求

tnx
miha

为什么客户端无法添加SOAP操作头?需要指定SOAP操作的事实是WSDL的一部分,因此也是您的契约的一部分。如果一个客户不发送标题,它就不符合您的合同。主要问题是我们正在与他们进行集成。他们不能改变任何事情,他们唯一的选择就是将我们的url添加到soap服务中。用于生成我们从中获得的类的Wsdl文件。我将soapaction添加到soap文件中,但他们不会读取这些文件,他们只是使用我们的URL提供服务,仅此而已。他们不能做任何修改。一切都必须由我们来做。当我们向他们的服务发送请求时,我们也不会向他们发送SoapAction。那么有没有办法找到解决方案,spring就能在@Endpoint之前解密请求?你的评论没有任何意义。。。他们正在给你打电话,所以已经有合同了,他们应该和你一样遵守。如果加密不是合同的一部分,您就不能添加加密。我问他们,如果我在wsdl中定义了SoapAciton,他们为什么不发送SoapAciton,我得到的答案是,只能为我们的服务添加URL。(他们规定了我们必须实施的内容)我知道你想说什么,但我无能为力。那么,是否有任何选项可以在不使用SoapAction头的情况下对请求进行解密?@M.Deinum或者是否有任何方法欺骗spring,以便在搜索PayloadRoot之前触发Wss4jSecurityInterceptor?