#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 страница, но показывающая страницу входа в систему с ключом