在Spring中使用JAX-WS为webservice客户端进行摘要密码认证

3
我有一个使用JAX-WS消费另一个Web服务的Spring应用程序。一切都运行良好,但现在这个Web服务已经切换到需要摘要密码。如何在JAX-WS中实现这个?根据Spring文档,这应该是可能的,但我找不到任何带有JAX-WS的代码示例:http://static.springsource.org/spring-ws/site/reference/html/security.html#d4e2684。是否有人之前做过这个?非常感谢任何代码示例。

我相当确定你做不到。你提供的例子是WS-Security,这与我认为你指的原始HTTP摘要身份验证在服务器上并不相同。 - MJB
摘要认证似乎在当今很常见。那么JAX-WS真的无法解决这种情况,我必须切换到其他库吗? - Master Drools
你应该四处寻找,因为不同的JAX-WS实现可能有解决此问题的方法。但是JAXWS本身通常只支持HTTP级别的基本身份验证。 - MJB
我想我必须转换到Axis2。 - Master Drools
1个回答

0

在查找和阅读文档后,似乎目前使用JAX-WS不可能进行摘要认证。令人惊讶的是,使用现有工具实现这一点应该不会太困难。虽然我没有采用这种方式,但我还是会写下来,以防其他人有兴趣接受挑战。

JAX-WS支持添加处理程序,在将消息或其标头发送到网络之前修改它们。在那个阶段可以完成获取nonce和计算密码摘要的操作。有一篇博客文章介绍了如何添加处理程序以加密和解密消息,可以作为此操作的基础。

支持摘要认证的Axis2使用Apache WSS4J进行安全性保护。因此,WSS4J项目必须具备计算值的所有方法,唯一需要做的就是在JAX-WS回调处理程序中调用正确的方法(并获取nonce)。


不幸的是,当这些处理程序被调用时,似乎已经太晚了。要设置处理程序,您必须已经拥有BindingProvider的实例。您可以从服务中获取其中之一。要获取服务,您必须获取WSDL。如果WSDL要求凭据(在我们的情况下确实如此),那么您将无法获得API处理程序。 - Hakanai

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接