#spring-boot #spring-mvc #spring-security #keycloak
Вопрос:
Ответ №1:
Теперь я не вижу предупреждений после того, как внес некоторые изменения. Вот что я сделал в своей pom.xml и внес некоторые изменения в класс конфигурации, который расширяет KeycloakWebSecurityConfigurerAdapter
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(«фильтр не может быть установлен после того, как объект был прочитан»)