【问题标题】:Digest password authentication with JAX-WS in Spring for webservice client在 Spring 中为 Web 服务客户端使用 JAX-WS 进行摘要密码身份验证
【发布时间】:2011-06-09 15:10:15
【问题描述】:

我有一个使用 JAX-WS 来使用另一个 Web 服务的 Spring 应用程序。一切正常,但现在此 Web 服务已切换为需要摘要密码。我如何使用 JAX-WS 来实现这一点?

我从 Sprig 文档中看到这应该是可能的,但我找不到任何带有 JAX-WS 的代码示例:http://static.springsource.org/spring-ws/site/reference/html/security.html#d4e2684

以前有人做过吗?任何代码示例将不胜感激。

【问题讨论】:

  • 我很确定你不能。您给出的示例是 WS-Security - 这与我认为您的意思不同 - 这是服务器上的原始 http 摘要身份验证。
  • 摘要式身份验证如今似乎很普遍。 JAX-WS 无法解决这种情况,我必须切换到其他库,这真的是真的吗?
  • 您应该环顾四周,因为不同的 JAX-WS 实现可能有办法解决它。但是 JAXWS 本身通常只支持 http 级别的 BASIC 身份验证。
  • 我想我必须切换到Axis2。

标签: java web-services security spring jax-ws


【解决方案1】:

在四处挖掘并阅读文档之后,似乎 JAX-WS 目前无法进行摘要式身份验证。令人惊讶的是,使用现有工具实施起来应该不会太难。我没有走这条路,但无论如何我都会写下来以防万一其他人有兴趣接受挑战。

JAX-WS 支持添加处理程序,以便在通过网络发送之前修改消息或其标头。获取 nonce 和计算密码摘要也可以在该阶段完成。有一个blog post 添加处理程序来加密和解密可用作此基础的消息。

具有摘要式身份验证支持的Axis2 使用Apache WSS4J 来保证安全性。所以 WSS4J 项目必须具备计算值的所有方法,唯一需要的部分是在 JAX-WS 回调处理程序中调用正确的方法(并获取 nonce)。

【讨论】:

  • 不幸的是,当这些处理程序被调用时,似乎为时已晚。要设置处理程序,您必须已经有一个 BindingProvider 实例。您从服务中获得其中之一。要获得服务,您必须获取 WSDL。如果 WSDL 要求提供凭据(在我们的例子中就是这样做的),怪不得,您没有得到 API 处理程序。
猜你喜欢
  • 2012-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多