DelegatingSerializationFilter 无法设置 ObjectFilter:空警告消息重复出现在控制台中

Posted

技术标签:

【中文标题】DelegatingSerializationFilter 无法设置 ObjectFilter:空警告消息重复出现在控制台中【英文标题】:DelegatingSerializationFilter Could not set ObjectFilter: null warning message is repetitively appearing in console 【发布时间】:2021-08-03 16:26:43 【问题描述】:

不知道为什么会这样。

我们将不胜感激。谢谢

【问题讨论】:

【参考方案1】:

现在我做了一些更改后看不到警告。这就是我在 pom.xml 中所做的,并对扩展 KeycloakWebSecurityConfigurerAdapter 的 Config 类进行了一些更改

public class ResourceServerConfig extends KeycloakWebSecurityConfigurerAdapter 

public final KeycloakClientRequestFactory keycloakClientRequestFactory;

// keycloakClientRequestFactory injected via constructor
public ResourceServerConfig(KeycloakClientRequestFactory keycloakClientRequestFactory) 
    this.keycloakClientRequestFactory = keycloakClientRequestFactory;


...
...
/**
 * To simplify communication between clients, Keycloak provides an extension of Spring’s RestTemplate that handles
 * bearer token authentication for you. To enable this feature your security configuration must add the
 * KeycloakRestTemplate bean. Note that it must be scoped as a prototype to function correctly.
 * <p>
 * Refer: https://www.keycloak.org/docs/latest/securing_apps/#_spring_security_adapter (Spring Security Adapter)
 *
 * @return
 */
@Bean
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
public KeycloakRestTemplate keycloakRestTemplate() 
    return new KeycloakRestTemplate(keycloakClientRequestFactory);


并且在 pom.xml 文件中

        <dependency>
        <groupId>org.keycloak</groupId>
        <artifactId>keycloak-spring-boot-starter</artifactId>
        <version>12.0.4</version>
    </dependency>
    <dependency>
        <groupId>org.keycloak</groupId>
        <artifactId>keycloak-spring-security-adapter</artifactId>
        <version>13.0.1</version>
    </dependency>

【讨论】:

【参考方案2】:

使用

-Djdk.serialSetFilterAfterRead=true

详情请看下文

https://issues.redhat.com/browse/KEYCLOAK-15901

似乎问题是由 ObjectInputStream.setObjectFilter 引起的 (在 Java 9 - 11 上)各自 ObjectInputStream.setInternalObjectInputFilter(在 Java 8 中)抛出 IllegalStateException("在对象被删除后不能设置过滤器 读")

【讨论】:

以上是关于DelegatingSerializationFilter 无法设置 ObjectFilter:空警告消息重复出现在控制台中的主要内容,如果未能解决你的问题,请参考以下文章