keycloak cycle dependencies fix

This commit is contained in:
ialbert 2022-08-03 13:05:01 +03:00
parent d5add01b2b
commit 63421f7bde
2 changed files with 34 additions and 13 deletions

View file

@ -0,0 +1,34 @@
package ru.spcex.clearing.backendapi.security;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.keycloak.adapters.KeycloakConfigResolver;
import org.keycloak.adapters.KeycloakDeployment;
import org.keycloak.adapters.KeycloakDeploymentBuilder;
import org.keycloak.adapters.springsecurity.config.KeycloakSpringConfigResolverWrapper;
import org.keycloak.representations.adapters.config.AdapterConfig;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import java.io.IOException;
@Configuration
public class KeycloakJsonSettingConfig {
private final Resource keycloakJson;
public KeycloakJsonSettingConfig() {
this.keycloakJson = new ClassPathResource("keycloak.json");
if (!this.keycloakJson.exists()) {
throw new IllegalStateException("cannot find keycloak configuration");
}
}
@Bean
public KeycloakConfigResolver keycloakConfigResolver() throws IOException {
ObjectMapper json = new ObjectMapper();
AdapterConfig adapterConfig = json.readValue(keycloakJson.getFile(), AdapterConfig.class);
KeycloakDeployment build = KeycloakDeploymentBuilder.build(adapterConfig);
return new KeycloakSpringConfigResolverWrapper(facade -> build);
}
}

View file

@ -1,12 +1,9 @@
package ru.spcex.clearing.backendapi.security;
import org.keycloak.adapters.KeycloakConfigResolver;
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.context.annotation.Bean;
import org.springframework.context.annotation.Primary;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
@ -30,16 +27,6 @@ public class WebSecurityConfig extends KeycloakWebSecurityConfigurerAdapter {
authManagerBuilder.authenticationProvider(keycloakAuthenticationProvider);
}
/**
* чтобы переместить настройки keycloak в keycloak.json вместо application.properties
* если будут проблемы, реализовать {@link KeycloakConfigResolver} считывая JSON из keycloak.json
*/
@Primary
@Bean
public KeycloakConfigResolver keycloakConfigResolver() {
return null;
}
@Override
protected void configure(HttpSecurity http) throws Exception {
super.configure(http);