【问题标题】:JAXWS Client to invoke JAXWS Webservice using X509 Server authenticationJAXWS 客户端使用 X509 服务器身份验证调用 JAXWS Web 服务
【发布时间】:2012-01-04 15:16:49
【问题描述】:

我使用 wsdlc ANT 任务从 wsdl 创建了一个 JAXWS Web 服务,并部署在 Weblogic 10.3.0 中。我们有 Sun 一台 Java Server 7.0,其中安装并配置了 Verisign Server 证书,以将 web 服务请求转发到 weblogic。

我使用 wsimport ant 任务创建了一个 JAXWS 客户端来调用 Web 服务。使用 https URL 运行客户端时,我可以在 weblogic 中看到 xml 请求,并且 webservice 已成功处理。但我无法在 xml 请求/响应中找到 x509 证书的任何证据。除了使用 wsimport 生成存根之外,我还需要在客户端做任何事情吗?仅供参考,通过浏览器查看 wsdl 时,我可以通过浏览器查看证书详细信息。

【问题讨论】:

    标签: jax-ws


    【解决方案1】:

    您通过 HTTPS 连接到 WebService,您的客户端和服务器进行 x509 证书交换。这是在连接级别执行的操作,wsimport 与此无关。如果您想在该级别使用 x509 证书,则需要深入了解 Java HTTPS client certificate authentication / Java client for the X.509 secured web-service 和服务器端 Securing WebLogic Server: Configuring SSL

    或者,您可以降一级:使用 HTTP 协议连接到服务器并在 SOAP 级别上执行加密/签名/身份验证。然后参考 User authenticate in SOAPUsing JAX-WS-Based Web Services with SSL 获取 Metro/JAX-WS 服务,WS-Security 获取 Apache CXF,Spring Security With X.509 Certificate 获取 Spring Security - 取决于您将选择的框架。

    【讨论】:

    • 是的,我们需要在传输级别进行身份验证。当调用 web 服务时,我们如何验证身份验证是否真的发生了?我相信在 SOAP 级别上,我们可以在 xml 请求中看到证书详细信息是否正确?
    • 尝试在没有初始化证书存储的情况下运行客户端。它应该失败。在服务器端进行调试也很有帮助。
    • 其实我没有初始化任何商店,也没有失败。所以我在想证书没有在服务器端启用,但是当我使用 https 通过浏览器查看 wsdl 时,我可以通过浏览器窗口查看证书详细信息。
    • 在服务器上启用证书只是故事的一半。您需要的是强制 2-way SSL(不仅服务器向客户端提供证书,而且客户端也向服务器提供证书)。阅读this guidethis post
    • 但我的要求是只强制服务器认证(服务器提供证书)
    【解决方案2】:

    我能够使用 -Djavax.net.debug=all 来验证 SSL 握手。我没有修改我的客户端以包含信任库,如果证书由受信任的 CA 签名,则不需要它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-28
      • 1970-01-01
      • 2018-03-14
      • 2013-06-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多