【问题标题】:WSS4j 1.5: How to skip password validation?WSS4j 1.5:如何跳过密码验证?
【发布时间】:2016-03-21 20:22:01
【问题描述】:

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

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

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

【问题讨论】:

    标签: java security soap signing wss4j


    【解决方案1】:

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

    参考javax.security.auth.callback.CallbackHandler的源码,

    默认的 CallbackHandler 类实现可以在 auth.login.defaultCallbackHandler 安全属性。

    安全属性可以在Java安全属性文件中设置 位于名为 /lib/security/java.security 的文件中。 指 java.home 系统属性的值,并且 指定安装 JRE 的目录。

    如果安全属性设置为 CallbackHandler 实现类,然后会加载一个 LoginContext 指定的 CallbackHandler 并将其传递给底层 登录模块。

    LoginContext 仅在未提供时加载默认处理程序 一。所有默认处理程序实现必须提供一个公共的 零参数构造函数。

    还要注意WSS4J 1.5.XX带来的一些风险

    【讨论】:

    • 我仍然有点困惑如何注册回调处理程序。我查看了UsernameTokenProcessor 的源代码,但是当它查看这里的回调处理程序时,它已经在比较返回的密码了。我需要阻止 WSS4J 甚至尝试处理 UsernameToken,但我不完全确定回调处理程序应该是什么或应该如何注册。您知道是否有任何文档/示例吗?我意识到 WSS4J 1.5 已经很老了,我能找到的所有文档都是针对 WSS4J 2+ 的。
    • 好的 - 所以我在代码中挖掘了一些,发现它不是我需要的 CallbackHandler 而是一个自定义处理器。
    【解决方案2】:

    在深入研究 WSSecEngine 类之后,我发现我不需要 CallBackHandler,而是需要一个跳过 UsernameToken 对象处理的自定义处理器:

            WSSecurityEngine secEngine = new WSSecurityEngine();
            WSSConfig wsConfig = WSSConfig.newInstance();
            wsConfig.setProcessor(UsernameToken.TOKEN, new Processor() {
    
                @Override
                public void handleToken(Element arg0, Crypto arg1, Crypto arg2, CallbackHandler arg3, WSDocInfo arg4, Vector arg5, WSSConfig arg6)
                        throws WSSecurityException {
                    // skip the token processing
                    logger.debug("Skipping processing of the username token");
                }
    
                @Override
                public String getId() {
                    return null;
                }
            });
            secEngine.setWssConfig(wsConfig);
    

    虽然 WSS4J 1.5 已经非常老了,但希望这可能会在未来寄希望于其他人。

    WSS4J 1.6+ 改变了这些处理器与验证器一起工作的方式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多