Блокировка ключа не работает с корневым URL-адресом в проекте spring boot

#keycloak

Вопрос:

Я использую keyclaok в проекте spring boot, он хорошо работает. но в базовом URL («/») не работает

локальный хост:3000/привет, работает (показать страницу входа в систему с ключом)

локальный хост:3000/приложение 1 работает (не отображается страница входа в систему с ключом, я разрешил)

локальный хост:3000/ не работает (не отображается страница входа в систему с ключом и принудительной загрузкой index.html)

KeycloakConfig

 @Configuration @EnableWebSecurity public class KeycloakConfig extends KeycloakWebSecurityConfigurerAdapter {   @Autowired  public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {  KeycloakAuthenticationProvider keycloakAuthenticationProvider = keycloakAuthenticationProvider();  keycloakAuthenticationProvider.setGrantedAuthoritiesMapper(new SimpleAuthorityMapper());  auth.authenticationProvider(keycloakAuthenticationProvider);  }   @Bean  @Override  protected SessionAuthenticationStrategy sessionAuthenticationStrategy() {  return new RegisterSessionAuthenticationStrategy(  new SessionRegistryImpl());  }   @Override  protected void configure(HttpSecurity http) throws Exception {  super.configure(http);  http.authorizeRequests()  .antMatchers("/app*").permitAll()  .anyRequest().authenticated();  }   @Bean  public KeycloakConfigResolver keycloakConfigResolver() {  return new KeycloakConfigResolver() {  private KeycloakDeployment keycloakDeployment;   @Override  public KeycloakDeployment resolve(HttpFacade.Request facade) {  if (keycloakDeployment != null) {  return keycloakDeployment;  }  InputStream configInputStream = getClass().getResourceAsStream("/keycloak.json");  return KeycloakDeploymentBuilder.build(configInputStream);  }  };  } }   

Контроллер выборки

 @Controller public class SampleController {   @RequestMapping("/")  public String index() {  return "index";  }   @RequestMapping("/hello")  @ResponseBody  public String hello() {  return "Hello KeyCloak!";  }   @RequestMapping("/app1")  @ResponseBody  public String tracingTest() {  return "This is permitAll!";  } }   

keycloak.json

 {  "realm": "myrelam",  "auth-server-url": "http://localhost:8080/auth",  "ssl-required": "external",  "resource": "myapp",  "credentials": {  "secret": "XXX..."  },  "confidential-port": 0 }  

Я также добавил URL-адрес перенаправления (localhost:3000/*) для своего клиента на консоли keycloak

Комментарии:

1. Мы не сможем вам помочь, если вы не поделитесь своей конфигурацией.

2. Пожалуйста, поделитесь отображениями контроллера и имеющейся у вас конфигурацией

3. Добавлена некоторая конфигурация

4. С замком ключей проблем нет. Java spring вынуждает загружать html-страницу, потому что вы забыли нажать @ResponseBody в методе «индекс»

5. Если я добавлю аннотацию @ResponseBody в метод «индекс», просто загрузите строку «индекс». Я хочу, чтобы при попытке подключиться на локальном хосте:3000 просто отображалась страница входа в систему с ключом

Ответ №1:

Попробуйте настроить URL-адрес вашего клиента, как показано на рисунке ниже

введите описание изображения здесь

И добавьте @ResponseBody в метод «индекс», или вы должны добавить index.html стр.

Комментарии:

1. У меня уже такая же настройка

2. Если вы хотите вернуть строку «индекс», вы должны добавить @ResponseBody

3. Я пропустил описание. У меня есть index.html

4. проблема не в том index.html страница, но показывающая страницу входа в систему с ключом