Spring не может найти keycloak.json

Я пишу базовое Spring приложение(без излишеств) с секьюрностю через keycloak.

keycloak у меня стартует через докер контейнер и стартует правильно без ошибок, все настройки из realm-export.json применяются верно, но при запуске Application (самого Spring приложения) я ловлю ошибку

Unable to start web server; nested exception is org.springframework.boot.web.server.WebServerException: Unable to start embedded Tomcat

Причиной которой является то что Spring Не видит keycloak.json - это следует из строки ошибки ниже

Error creating bean with name 'keycloakAuthenticationProcessingFilter' defined in class path resource [org/example/config/SecurityConfig.class]: Invocation of init method failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'adapterDeploymentContext' defined in class path resource [org/example/config/SecurityConfig.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.keycloak.adapters.AdapterDeploymentContext]: Factory method 'adapterDeploymentContext' threw exception; nested exception is java.io.FileNotFoundException: Unable to locate Keycloak configuration file: keycloak.json

Собственно вопрос - что делать?

Ниже на скриншоте структура приложения:

Структура приложения

Вот SecurityConfig

package org.example.config;

import org.keycloak.adapters.springsecurity.KeycloakConfiguration;
import org.keycloak.adapters.springsecurity.authentication.KeycloakAuthenticationProvider;
import org.keycloak.adapters.springsecurity.config.KeycloakWebSecurityConfigurerAdapter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.core.authority.mapping.SimpleAuthorityMapper;
import org.springframework.security.web.authentication.session.NullAuthenticatedSessionStrategy;
import org.springframework.security.web.authentication.session.SessionAuthenticationStrategy;

@KeycloakConfiguration
class SecurityConfig extends KeycloakWebSecurityConfigurerAdapter {
    @Autowired
    public void configureGlobal(AuthenticationManagerBuilder auth) {
        KeycloakAuthenticationProvider keycloakAuthenticationProvider = keycloakAuthenticationProvider();
        keycloakAuthenticationProvider.setGrantedAuthoritiesMapper(new SimpleAuthorityMapper());
        auth.authenticationProvider(keycloakAuthenticationProvider);
    }

    @Override
    protected SessionAuthenticationStrategy sessionAuthenticationStrategy() {
        return new NullAuthenticatedSessionStrategy();
    }

}

application.properties:

keycloak.auth-server-url=http://localhost:8180/auth
keycloak.realm=Realm
keycloak.resource=Client
keycloak.public-client=true
keycloak.principal-attribute=preferred_username
keycloak.config.file=keycloak.json

DockerFile (там keycloak)

FROM jboss/keycloak
COPY realm-export.json /tmp/realm-export.json
CMD ["-b", "0.0.0.0", "-Dkeycloak.migration.action=import", "-Dkeycloak.migration.provider=singleFile", "-Dkeycloak.migration.file=/tmp/realm-export.json"]

Ну и сам keycloak.json

{
  "realm": "Realm",
  "auth-server-url": "http://localhost:8180/auth",
  "ssl-required": "external",
  "resource": "Client"
}

Ответы (1 шт):

Автор решения: Wonderf

Настройка поиска файла происходит в KeycloakWebSecurityConfigurerAdapter

@Value("${keycloak.configurationFile:WEB-INF/keycloak.json}")
private Resource keycloakConfigFileResource;

Для того чтобы класс нашел ваш файл нужно указать в application.properties:

keycloak.configurationFile=classpath:keycloak.json
→ Ссылка