Конфигурация Axon 4 XStream

При запуске приложения Spring Boot, которое включает Axon 4, я вижу в консоли вывода следующее:

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

Как мне защитить XStream, включенный в Axon 4?

Для пояснения я говорю о том, как настроить XStream, который использует Axon 4. Я не уверен, нужно ли это делать в файле YAML или в одном из классов конфигурации. Везде, где я пробовал информацию, подробно описанную в этом ответе не влияет на конфигурацию XStream, и я все равно получаю то же предупреждение.

Обновление: судя по приведенным ниже ответам, этот вопрос может быть двояким. Благодаря приведенным ниже ответам мне удалось заставить это работать следующим образом (на основе информации, размещенной на этот ответ):

    //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();
    }

Я не хотел отвечать на свой вопрос, так как думаю, что Ян получил правильный ответ в сочетании со Стивеном, указывающим на конфигурацию Spring Boot.

Я уверен, что мне нужно будет сократить объемы пакетов, и я сделаю это в свое время. Спасибо Яну и Стивену за вашу помощь.


person Kenneth Clark    schedule 22.03.2019    source источник


Ответы (2)


Это не относится к Axon, проверьте этот вопрос на предмет предыстории и решения: Структура безопасности XStream не инициализирована, возможно, XStream уязвим

person Jan Galinski    schedule 22.03.2019
comment
Спасибо за это, но я до сих пор не уверен, как и где делать эти вызовы конфигурации, чтобы аксон мог их поднять. Я читал этот ответ ранее, но не мог понять, где его поместить в последовательности инициализации. - person Kenneth Clark; 22.03.2019

Ян Галински прав в том, что это не проблема Axon, как говорится. Тем более сдвиг внутри пакета XStream. Тем не менее, ссылка, которой делится Ян, очень ценна.

Оттуда вы можете создать свой собственный XStream объект вместо того, чтобы использовать тот, который XStreamSerializer создает для вас при использовании Axon. Затем вы можете скормить этот объект builder() из XStreamSerializer.

Поскольку вы тоже используете 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();
}

Надеюсь это поможет!

person Steven    schedule 26.03.2019
comment
Спасибо за это. Возможно, то, как я сформулировал вопрос, привело к путанице. Оглядываясь назад, я думаю, что это были, вероятно, два вопроса, объединенные в один. Ян любезно ответил на первый вопрос, а вы ответили на второй вопрос. Я понимаю, что сериализатор XStream не является библиотекой Axon, но, поскольку он включен в библиотеки Axon, возможно, было бы неплохо перечислить пакеты, к которым XStream потребуется доступ? Единственный способ, которым я это понял, - это запустить - ›неудача -› изменение - ›и т. Д. Я ценю, что все очень заняты, и благодарю вас за то, что вы нашли время указать мне в правильном направлении. - person Kenneth Clark; 26.03.2019
comment
Справедливое предложение, их Кеннет - Я согласен, что в настройках XStreamSerializer еще предстоит сделать улучшения. Могу вас заверить, что это все еще на радаре AxonIQ. - person Steven; 27.03.2019