java - JAXWS。客户端传输异常 : The server sent HTTP status 403

标签 java web-services soap jax-ws

我已经使用 wsimport 从 wsdl 生成了类,wsdl 位置:https://somehost/wsdl 。一代没有问题。 但是当我尝试发送 SOAP 请求时,我收到了异常:

com.sun.xml.internal.ws.client.ClientTransportException:服务器发送了 HTTP 状态代码 403:需要客户端证书

我在网上冲浪时发现,我必须在我的 keystore 中添加证书。我已经做到了,但这没有帮助。 我不知道该做什么,甚至不知道该谷歌什么。

有人可以帮我吗?(

最佳答案

听起来像 mutual authentication问题。

服务器要求您的客户端使用已知的数字证书来签署您的消息并在请求中发送该信息。它类似于用户/密码机制,但您和服务器同意使用已知的 key 对进行识别。

这种情况通常意味着 Web 服务服务器管理员将生成 key 对并将证书的私有(private)部分发送给您。

但是如果您自己创建了公共(public)证书,您也可以为他发送公共(public)证书。服务器必须有权访问公共(public)证书,并且您可能必须将其发布给证书颁发机构。在某些情况下,它必须是商业证书(您必须购买它)。

然后,您将使用私钥对您的消息进行数字签名。

我找到了一些可能有帮助的链接:

如果您已经执行了这些步骤,则说明您的实现有问题,或者提供的证书/ key 无效。

我建议您使用模拟服务器来确保在尝试连接到真实服务之前正确实现客户端身份验证。使其在本地工作将设置调用实际函数所需的知识。您还可以要求 Web 服务管理员向您发送调试信息。

关于java - JAXWS。客户端传输异常 : The server sent HTTP status 403,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28216206/

相关文章:

java - 在 android 中调用 SOAP 服务的问题

java - @RefreshScope 似乎忽略了 Mockito 的模拟

c# - 带有以 c# 中的关键字 word 命名的参数的 API

java - 如何向不同的网络服务发送多个异步请求?

java - 重新导入 WSDL 以更新 Java Web 服务客户端

java - 生成 java 类到 src 不仅以 maven cxf-codegen-plugin 为目标

java - 在 Spring Webflow 单元测试中,如何断言 View 状态具有给定名称的 View ?

java - 如何在 Grails 中显示页面生成统计信息

java - SWT - 使用浮点坐标和亚像素精度进行绘图

java - 如何使用 JAXB 编码多个对象?