Keycloak. Invalid parameter: redirect_uri
Добрый день пытаюсь разобраться с подключением keycloak к spring boot приложению, однако при переходе на страницу с авторизацией появляется ошибка с неверным redirect_uri. Не понимаю где и как его изменить. Приложение работает на 8081, а keycloak на 8080. Заранее спасибо за помощь.
Конфигурация:
@Configuration
@EnableWebSecurity
public class SecurityConfig extends KeycloakWebSecurityConfigurerAdapter {
@Override
protected SessionAuthenticationStrategy sessionAuthenticationStrategy() {
return new NullAuthenticatedSessionStrategy();
}
@Autowired
public void configureGlobal(AuthenticationManagerBuilder authManagerBuilder) {
KeycloakAuthenticationProvider keycloakAuthenticationProvider = keycloakAuthenticationProvider();
keycloakAuthenticationProvider.setGrantedAuthoritiesMapper(new SimpleAuthorityMapper());
authManagerBuilder.authenticationProvider(keycloakAuthenticationProvider);
}
@Bean
public KeycloakConfigResolver keycloakConfigResolver() {
return new KeycloakSpringBootConfigResolver();
}
@Override
protected void configure(HttpSecurity http) throws Exception {
super.configure(http);
http
.authorizeRequests()
.antMatchers("/api/anonymous/**").permitAll()
.anyRequest().fullyAuthenticated();
}
}
Контроллер:
@RestController
@RequestMapping("/api")
public class KeyCloakController {
@GetMapping("/user")
@PreAuthorize("hasRole('USER')")
public String getUserInfo() {
return "user info";
}
@GetMapping("/admin")
@PreAuthorize("hasRole('ADMIN')")
public String getAdminInfo() {
return "admin info";
}
@GetMapping("/service")
public String getServiceInfo() {
return "service info";
}
@GetMapping("/me")
public Object getMe() {
final Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
return authentication.getName();
}
}
Properties:
keycloak.auth-server-url=http://localhost:8080
keycloak.realm=my_realm
keycloak.resource=my_client
keycloak.public-client=true
Неверный redirect_uri выглядит так: redirect_uri=http%3A%2F%2Flocalhost%3A8081%2Fsso%2Flogin
