java - 如果出现 401 HTTP 响应代码,CXF SOAP 无法在客户端解析请求

标签 java soap cxf

各位同事,

我有基于 CXF 实现的 SOAP Web 服务,并启用了 SSL 和 WSS 配置(使用 WSP 进行配置)。 我有用于测试此服务的测试工具,也是使用 CXF 编写的。

积极的案例正在发挥作用。尝试测试具有安全错误(错误的证书/签名)的负面案例。

客户要求我在出现安全错误时返回 fault:401HTTP 响应代码 401

问题: 当我从接收方(在测试工具中)的 Web 服务返回 HTTP 代码 401 时,我收到编码(marshal)错误,因为传入的内部 InputStream 为空(没有内容)。当我返回任何其他 HTTP 代码 (200/403/419/500/503) 时 - 接收方没有任何问题!我可以看到 Web 服务端生成的消息中的 SOAP 错误。

问题:

  • 也许 CXF 中有一些特定的处理 401 HTTP 代码?
  • 也许 SOAP 一般有一些特定的要求?

如果在 SOAP 中返回 401 HTTP 代码,这是不好的做法,您能否提供文档/源代码来证明此行为并帮助我更改客户需求。我试图查看抛出代码,但没有找到处理此案例的地方

P.S:尝试使用 WireShark 和 RawCap 捕获流量并尝试对其进行解码,但没有成功。

最佳答案

我认为这个问题的回答会对你有帮助 question

该问题还包括为您的客户提供有关故障响应代码的 SOAP 规范的引用。

关于java - 如果出现 401 HTTP 响应代码,CXF SOAP 无法在客户端解析请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52219243/

相关文章:

java - CXF 客户端 + WS-Security + MTOM = 麻烦?

java - 从受密码保护的网页下载 pdf

java - 如何保护java库不被其他项目使用?

java - 如何: Async Callbacks using SOAP/REST Web Services with Java

java - Apache Wink 和 Apache CXF JAX-RS 实现

spring - 如何从 CXF 端点调用 Spring Integration 应用程序

java - 未找到 JNDI Ldap 类

java - 在 Canvas 上显示两个点 A 和 B

web-services - SoapUI:使用 Groovy 根据请求验证返回 MockResponse

java - 如何公开 EJB JAX-WS Web 方法来接收 commonj.SDO DataObject 类型的对象