gpt4 book ai didi

wsdl - WSP0075:策略断言“TransportBinding”被评估为“未知”。为什么?

转载 作者:行者123 更新时间:2023-12-03 20:18:09 26 4
gpt4 key购买 nike

我是不受控制的SOAP服务的客户端(在.NET中实现)。该服务提供了WSDL。我使用Apache CXF从WSDL生成Java客户端(特别是,我在Maven中使用cxf-codegen-plugin,在后台使用wsdl2java)。

但是,当我实例化生成的服务类时,将记录以下警告:

Sep 04, 2014 5:18:00 PM [com.sun.xml.internal.ws.policy.EffectiveAlternativeSelector]  selectAlternatives
WARNING: WSP0075: Policy assertion "{http://schemas.xmlsoap.org/ws/2005/07/securitypolicy}TransportBinding" was evaluated as "UNKNOWN".
Sep 04, 2014 5:18:00 PM [com.sun.xml.internal.ws.policy.EffectiveAlternativeSelector] selectAlternatives
WARNING: WSP0019: Suboptimal policy alternative selected on the client side with fitness "UNKNOWN".


但是客户端可以正常工作-我使用该服务没有任何问题。但是,我对这些错误感到困惑。

错误是关于WSDL中的此安全策略的,我认为它说它无法理解:

<wsp:Policy wsu:Id="soap11_policy" 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:TransportBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<wsp:Policy>
<sp:TransportToken>
<wsp:Policy>
<sp:HttpsToken RequireClientCertificate="false"/>
</wsp:Policy>
</sp:TransportToken>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic256/>
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:Layout>
<wsp:Policy>
<sp:Strict/>
</wsp:Policy>
</sp:Layout>
</wsp:Policy>
</sp:TransportBinding>
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>


但是据我所知,这是一项完全普通的政策,没有什么不寻常的地方。当然应该理解吗?如何解决此警告?

记录一下,这是wsdl2java的调用方式(摘自pom.xml)。

-exsh true arg和 cxf-rt-bindings-soap依赖性是因为WSDL在其参数中使用了一些隐式的肥皂头,而我需要这个,以便它们正确地包含在生成的服务类方法中。

我添加了 cxf-rt-ws-securitycxf-rt-ws-policy依赖项来尝试解决此警告,并认为可能不包括安全性和策略信息。但是,这并不能解决任何问题(尽管也没有任何问题)。

<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-codegen-plugin</artifactId>
<version>3.0.1</version>
<executions>
<execution>
<id>rh-soap-client-ssi</id>
<phase>generate-sources</phase>
<configuration>
<sourceRoot>${project.build.directory}/generated/cxf</sourceRoot>
<wsdlOptions>
<wsdlOption>
<wsdl>https://example.org/ssi?wsdl</wsdl>
<extraargs>
<extraarg>-verbose</extraarg>
<extraarg>-client</extraarg>
<extraarg>-mark-generated</extraarg>
<extraarg>-exsh</extraarg>
<extraarg>true</extraarg>
<extraarg>-autoNameResolution</extraarg>
</extraargs>
</wsdlOption>
</wsdlOptions>
</configuration>
<goals>
<goal>wsdl2java</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-bindings-soap</artifactId>
<version>3.0.1</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-ws-security</artifactId>
<version>3.0.1</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-ws-policy</artifactId>
<version>3.0.1</version>
</dependency>
</dependencies>
</plugin>

最佳答案

通过猜测和查看Maven Central中的工件,我找到了解决方案。

事实证明,为了真正理解和评估wsdl中的策略,必须提供缺少的运行时依赖项。对我来说是org.apache.cxf/cxf-rt-frontend-jaxws。我在任何地方都找不到此文档。这引入了许多其他cxf依赖关系,我不知道是否可以使用更小的一组依赖关系。

包含此依赖关系后,实例化客户端对象时将不再收到警告。 (此外,实例化需要更长的时间!)

但是,当我尝试使用该服务时,出现异常:

javax.xml.ws.soap.SOAPFaultException: None of the policy alternatives can be satisfied.
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:159)
...


这很可能是由于Willie Wheeler的答案指出的原因:该策略要求在传输上使用256位加密,但是此服务的SSL使用128位加密。但是,将wsdl与 Base128一起使用不能解决此异常,因此我没有做进一步调查。

因此,使用此服务的每个人都有可能收到此警告或类似的警告,并且如果实际检查了安全策略,则不可能使用此服务。我想我会忍受警告。

关于wsdl - WSP0075:策略断言“TransportBinding”被评估为“未知”。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25676235/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com