【问题标题】:Axon 4 XStream configurationAxon 4 XStream 配置
【发布时间】:2019-03-22 11:25:05
【问题描述】:

运行包含 Axon 4 的 Spring Boot 应用程序时,我在输出控制台中看到以下内容:

Security framework of XStream not initialized, XStream is probably vulnerable.

如何保护 Axon 4 中包含的 XStream?

为了澄清,我说的是如何配置 Axon 4 使用的 XStream。我不确定这是否应该在 YAML 文件或配置类之一中完成。我尝试过this answer 中详细信息的每个地方都不会影响 XStream 配置,我仍然会收到相同的警告。

更新: 根据下面的答案,这个问题似乎有两个方面。感谢下面的答案,我设法让这个工作如下(基于发布在this answer 的信息):

    //AxonConfig.java
    @Bean
    XStream xstream(){
        XStream xstream = new XStream();
        // clear out existing permissions and set own ones
        xstream.addPermission(NoTypePermission.NONE);
        // allow any type from the same package
        xstream.allowTypesByWildcard(new String[] {
                "com.ourpackages.**",
                "org.axonframework.**",
                "java.**",
                "com.thoughtworks.xstream.**"
        });

        return xstream;
    }

    @Bean
    @Primary
    public Serializer serializer(XStream xStream) {
        return XStreamSerializer.builder().xStream(xStream).build();
    }

我不想回答我自己的问题,因为我认为 Jan 得到了正确的答案,而 Steven 则指向 Spring Boot 配置。

我确信我需要削减包范围,并将在适当的时候这样做。感谢 Jan 和 Steven 的帮助。

【问题讨论】:

    标签: spring-boot axon


    【解决方案1】:

    这不是 Axon 特定的,请查看此问题的背景和解决方案:Security framework of XStream not initialized, XStream is probably vulnerable

    【讨论】:

    • 谢谢你,但我仍然不确定如何/在哪里进行这些配置,需要轴突来获取它。我之前读过这个答案,但不知道将它放在初始化序列中的哪个位置。
    【解决方案2】:

    Jan Galinski 是对的,因为这不是 Axon 特定的问题。在XStream 包中更是如此。无论如何,Jan 分享的链接非常有价值。

    从那里,您可以创建自己的 XStream 对象,而不是使用 XStreamSerializer 在使用 Axon 时为您创建的对象。然后,您可以将该对象提供给 XStreamSerializerbuilder()

    由于您也在使用 Spring Boot,因此只需像这样具有 bean 创建功能就足够了:

    // The XStream should be configured in such a way that a security solution is provided
    @Bean
    public Serializer serializer(XStream xStream) {
        return XStreamSerializer.builder().xStream(xStream).build();
    }
    

    希望这会有所帮助!

    【讨论】:

    • 谢谢。也许我表达问题的方式导致了混乱。事后看来,我认为这可能是两个问题合二为一。 Jan 友好地回答了第一个问题,您回答了第二个问题。我了解 XStream 序列化程序不是 Axon 库,但由于它包含在 Axon 库中,因此列出 XStream 需要访问的包可能是个好主意?我发现这一点的唯一方法是运行 -> 失败 -> 更改 -> 等等。我感谢每个人都非常忙碌,感谢您抽出时间为我指明正确的方向
    • 公平地建议他们的 Kenneth - 我同意在 XStreamSerializer 的设置方面仍有待改进。我可以向你保证,这仍然在 AxonIQ 的雷达上。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-22
    • 2018-09-16
    • 1970-01-01
    • 2020-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多