我需要使用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附带的某些风险