各位同事,
我有基于 CXF 实现的 SOAP Web 服务,并启用了 SSL 和 WSS 配置(使用 WSP 进行配置)。 我有用于测试此服务的测试工具,也是使用 CXF 编写的。
积极的案例正在发挥作用。尝试测试具有安全错误(错误的证书/签名)的负面案例。
客户要求我在出现安全错误时返回 fault:401
和 HTTP 响应代码 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/