java - Axis2 用户认证

标签 java web-services soap wsdl axis2

由于希望尽可能保持 Web 服务无状态,我遇到了一个问题。我最近开始使用 Axis2,并试图找到一个可行的身份验证解决方案。对于身份验证,我的意思是用户/密码。我已经结合使用 SSL 和 WS-Policy 来保护过程调用。

但是,我发现一些与 Rampart 1.6.2 捆绑在一起的样本已经过时,尤其是名为“sample-tomcat”的策略示例及其 WSPasswordCallback 处理程序(找到 here)。 WSPasswordCallback.USERNAME_TOKEN_UNKNOWN 在 1.6 中已被弃用,并且 WSPasswordCallback.getPassword() 始终返回 null,即使在消息的安全 header 中的 UsernameToken 元素中提供了密码也是如此。

所以。我不确定从哪里开始检查每条消息的用户名/密码。我正在查看这两个选项:

  1. 使用执行用户名/密码身份验证的处理程序编写模块。

  2. 放弃无状态并编写一个登录服务返回所有其他服务所需的 token 。

还有其他选择吗?

最佳答案

实际上,根据 WSS4J 开发人员 Colm O Heigeartaigh 的说法,在更改之前使用 validator 接口(interface)更奇怪,请参阅 his first , his secondhis third有关 WSS4J 1.6 中新 validator 设计的博客文章。

WSPasswordCallback 不应处理身份验证,它被认为是糟糕的设计并且不利于关注点分离,因此他们(WSS4J 开发人员)重写了 WSS4J 的这一部分。

但是,据我所知,Rampart 开发团队尚未为开发人员实现应用自定义 validator 的方法,也没有应用 WSS4J validator (例如 NoOpValidator)的方法 - 甚至尽管它在 WSS4J 中可用。在他们的(Rampart 的)项目 JIRA(read it here)中注册了一个问题,但它的优先级很低,截至目前正在编写;该问题不包含在下一个次要 (1.6.3) 或主要 (1.7.0) 版本中。

因此,您必须按照我自己的喜好顺序执行以下三项操作中的一项:

  • 使用基于传输层的身份验证,我会推荐使用 HTTPS 传输的身份验证 header 。
  • 将 Axis2 和 Rampart 降级到 1.5.x,该版本仍在维护(关键错误修复)。
  • 编辑 wss4j 的源代码并编译一个新的 jar。
  • 为 Axis2 编写一个模块来解决这个问题。

如果有其他解决方案/解决方法,请随时发表评论/纠正我。

关于java - Axis2 用户认证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13817145/

相关文章:

ios - 快速网络服务通信

java - spring-boot 中存在多个 WebSecurityConfigurerAdapter 的问题

java - 通过 Notes Java 代理的存储过程

表单例份验证应用程序中的 ASP.NET Web 服务

java - 相互SSL-以正确的格式获取 key /信任库

r - 带有 WSDL for R 的 SOAP 客户端

java - 如何在Servlet中完全消失session?

java - 从头开始的 2D 自顶向下 Java (1.8) 游戏(无)

javascript - 用于使用 Axis2 服务的 JavaScript 客户端

java - 使用paypal api时无法建立SOAP连接