Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Axis2用户身份验证_Java_Web Services_Soap_Wsdl_Axis2 - Fatal编程技术网

Java Axis2用户身份验证

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

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

但是,我发现与Rampart 1.6.2捆绑的一些示例已经过时,特别是名为“sample tomcat”的策略示例及其WSPasswordCallback处理程序(已找到)
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编写一个模块来解决这个问题

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

    我认为你无法摆脱无状态状态,但你可以在请求中传递一些信息,这会导致身份验证/授权。摆脱无状态?嗯,我可以实现状态,这是肯定的。但我想要尽可能少的状态,最好是没有任何状态。