Java Axis2用户身份验证
由于希望使web服务尽可能无状态,我遇到了一个问题。我最近开始使用Axis2,并试图找到一个可行的身份验证解决方案。对于身份验证,我指的是用户/密码。我已经在结合使用SSL和WS-Policy来保护过程调用 但是,我发现与Rampart 1.6.2捆绑的一些示例已经过时,特别是名为“sample tomcat”的策略示例及其WSPasswordCallback处理程序(已找到)Java Axis2用户身份验证,java,web-services,soap,wsdl,axis2,Java,Web Services,Soap,Wsdl,Axis2,由于希望使web服务尽可能无状态,我遇到了一个问题。我最近开始使用Axis2,并试图找到一个可行的身份验证解决方案。对于身份验证,我指的是用户/密码。我已经在结合使用SSL和WS-Policy来保护过程调用 但是,我发现与Rampart 1.6.2捆绑的一些示例已经过时,特别是名为“sample tomcat”的策略示例及其WSPasswordCallback处理程序(已找到)WSPasswordCallback.USERNAME\u TOKEN\u UNKNOWN在1.6中被弃用,并且WSPa
WSPasswordCallback.USERNAME\u TOKEN\u UNKNOWN
在1.6中被弃用,并且WSPasswordCallback.getPassword()
始终返回null,即使消息的安全标头中的UsernameToken元素中提供了密码
所以。我不确定从何处获取每条消息的用户名/密码检查。我正在考虑以下两种选择:
还有其他选择吗?实际上,根据WSS4J开发人员Colm O Heigerataigh的说法,在更改使用验证程序接口之前,情况更为奇怪,请参阅,以及有关WSS4J 1.6中新验证程序设计的博客文章
WSPasswordCallback
不应该处理身份验证,它被认为是糟糕的设计,不利于分离关注点,因此他们(WSS4J开发人员)重写了WSS4J的这一部分
然而,据我所知,Rampart开发团队还没有为开发人员实现一种应用自定义验证器的方法,也没有一种应用WSS4J验证器的方法,例如NoOpValidator
——即使它在WSS4J中可用。他们(Rampart的)项目JIRA()中有一个问题,但它的优先级较低,目前正在编写;该问题不包括在下一个次要(1.6.3)或主要(1.7.0)版本中
因此,根据我的喜好,你必须做以下三件事之一:
- 使用基于传输层的身份验证,我建议使用HTTPS传输的身份验证头
- 将Axis2和Rampart降级到1.5.x,该版本仍然保持不变(关键错误修复)
- 编辑wss4j的源代码并编译一个新的jar
- 为Axis2编写一个模块来解决这个问题
如果有其他解决方案/解决方法,请随时评论/纠正我。我认为你无法摆脱无状态状态,但你可以在请求中传递一些信息,这会导致身份验证/授权。摆脱无状态?嗯,我可以实现状态,这是肯定的。但我想要尽可能少的状态,最好是没有任何状态。