gpt4 book ai didi

java - 在 Axon/SpringBoot 中获取 ForbiddenClassException

转载 作者:行者123 更新时间:2023-12-05 03:31:32 29 4
gpt4 key购买 nike

我正在尝试使用 spring boot 实现轴突框架。

这是 jar 的版本。

  1. Spring 启动 2.6.1
  2. Java 17
  3. 轴突 4.5.6

我的项目结构是:

  • 用户命令
  • 用户查询
  • user-core(普通jar包含事件)

我在尝试从查询应用程序访问 UserRegisteredEvent* 时遇到以下异常。

com.thoughtworks.xstream.security.ForbiddenClassException: com.tesla.user.core.events.UserRegisteredEvent
at com.thoughtworks.xstream.security.NoTypePermission.allows(NoTypePermission.java:26) ~[xstream-1.4.18.jar:1.4.18]

我哪里错了?

注意:

我已经尝试将我的 java 版本降级到 16 并将 spring boot 降级到 2.4.*。

最佳答案

Where I am going wrong?

您的问题出在 XStream 上,您可以从异常中看出这一点。

XStream 已经看到一些CVE's大约几个月前飞行,这需要它的反序列化方法来 180 度大转弯。

XStream 现在要求您告诉您它可以序列化哪些类,而不是采用完全反射(reflection)的方法来理解如何反序列化/序列化对象。

Axon 将 XStreamSerializer 视为适用于任何应用程序的默认设置,因为它 能够对所有内容进行反序列化/序列化。但是,上述情况使这变得不可行,并且需要在序列化程序的末端进行一些更改。

这些更改已在 Framework 4.5.4 中发布,您可以找到其发行说明 here .

您可以在注释中发现,该框架试图提供一个 XStream 实例,其中包含一些为您提供保护的类型。它通过查找 @EnableAutoConfiguration 注释类的包名称来实现。请注意,@SpringBootApplication 使用 @EnableAutoConfiguration 进行元注释。

Axon 的自动配置将允许该包下的所有类型,但仅此而已。该框架还会向您发出警告,在 INFO 级别说明以下内容:

Initializing an XStream instance since none was found. 
The auto configuration base packages will be used as wildcards for the XStream security settings.

综上所述,我有两个建议给你:

  1. 如果您想坚持使用 XStream 作为序列化程序,我建议您手动配置一个 XStream 实例。这使您可以完全控制哪些类可以序列化或不能序列化,从而解决前面提到的异常。
  2. 如果您对正在使用的序列化器不感兴趣,可以试用 Axon Framework 提供的 JacksonSerializer。这将要求您通过 ObjectMapper 使所有对象反序列化/序列化。从而引入额外的依赖关系和/或注释。

要了解如何在 Axon 中配置序列化程序,请参阅 this他们的引用指南页面。

关于java - 在 Axon/SpringBoot 中获取 ForbiddenClassException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70624317/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com