我需要使用apache WSS4J 1.5进行一些SOAP签名/验证,但是我在跳过/禁用UsernameToken密码验证时遇到了麻烦。

在WSS4J 1.6+中,我可以将安全引擎配置为使用NoOpValidator()类跳过用户名令牌认证,但是1.5没有此支持。

有什么办法告诉WSS4J 1.5完全跳过用户名/密码验证路由?

最佳答案

您需要编写自己的回调处理程序实现以跳过LoginContext的加载。然后可以从系统属性中加载该处理程序类。

引用javax.security.auth.callback.CallbackHandler的源代码,


  默认的CallbackHandler类实现可以在
  auth.login.defaultCallbackHandler安全属性。
  
  可以在Java安全属性文件中设置安全属性
  位于名为/lib/security/java.security的文件中。
   引用java.home系统属性的值,并且
  指定JRE的安装目录。
  
  如果安全属性设置为a的标准名称
  CallbackHandler实现类,则将加载LoginContext
  指定的CallbackHandler并将其传递给基础
  LoginModules。
  
  如果未提供LoginContext,则仅加载默认处理程序
  一。所有默认处理程序实现都必须提供公共
  零参数构造函数。


另请注意WSS4J 1.5.XX附带的某些风险

10-05 23:53