Нужна помощь в настройке KeyCloak в архитектуре микросервисов. ⇐ JAVA
-
Anonymous
Нужна помощь в настройке KeyCloak в архитектуре микросервисов.
Прежде чем начать, представьте, что я только что вылупился из яйца и учусь вставать. Вот насколько я новичок в микросервисах. В настоящее время я просматриваю руководство по микросервисам на YouTube и застрял на разделе «Защита микросервисов с помощью KeyCloak». Это руководство, которому я следую: . Я застрял на 3:20:40. Парень говорит, что нам нужно включить какой-то механизм аутентификации для сервера обнаружения (базовая аутентификация). Затем он создает класс конфигурации для сервера обнаружения (Netflix-eureka) и реализует вот что:
@Configuration @EnableWebSecurity общественный класс SecurityConfig расширяет WebSecurityConfigurerAdapter { @Value("${eureka_username}") личное имя пользователя String; @Value("${eureka_password}") личный строковый пароль; @Override public void configure (AuthenticationManagerBuilder аутентификацияManagerBuilder) выдает исключение { аутентификацияManagerBuilder.inMemoryAuthentication() .passwordEncoder(NoOpPasswordEncoder) .withUser(имя пользователя).пароль(пароль) .authorities("ПОЛЬЗОВАТЕЛЬ"); } @Бин public SecurityFilterChain filterChain(HttpSecurity http) выдает исключение { http.csrf() .запрещать() .authorizeRequests() .Любой запрос() .аутентифицированный() .и() .httpBasic(); вернуть http.build(); } } Теперь, поскольку WebSecurityConfigurerAdapter устарел, я попробую вместо этого этот подход:
@Configuration @EnableWebSecurity общественный класс SecurityConfig { @Value("${eureka_username}") личное имя пользователя String; @Value("${eureka_password}") личный строковый пароль; @Бин общественный BCryptPasswordEncoder bCryptPasswordEncoder() { вернуть новый BCryptPasswordEncoder(); } @Бин public UserDetailsService userDetailsService (BCryptPasswordEncoder bCryptPasswordEncoder) { Менеджер InMemoryUserDetailsManager = новый InMemoryUserDetailsManager(); Manager.createUser(User.withUsername(имя пользователя) .password(bCryptPasswordEncoder.encode(пароль)) .roles("ПОЛЬЗОВАТЕЛЬ") .строить()); менеджер по возврату; } @ Бин public SecurityFilterChain filterChain(HttpSecurity http) выдает исключение { http.csrf() .запрещать() .authorizeRequests() .Любой запрос() .аутентифицированный() .и() .httpBasic(); вернуть http.build(); } Однако мои микросервисы (сервис продуктов, сервис заказов и сервис инвентаризации) не могут зарегистрироваться на сервере обнаружения. Мой сервер обнаружения доступен по адресу http://localhost:8080/eureka/web до настройки безопасности, и теперь, как и ожидалось, меня просят ввести имя пользователя и пароль по тому же URL-адресу, но когда я ввожу имя пользователя и пароль, Я получаю сообщение об ошибке «Неверные учетные данные». Я не знаю, что делать, и застрял здесь на 2 дня. Я очень хочу учиться и ценю всех, кто откликается и помогает мне изучить что-то новое.
PS: если вам нужна дополнительная информация о проекте, которая поможет вам помочь мне, укажите это в комментариях, и я ее предоставлю. Спасибо!
Я попробовал следовать этому: https://spring.io/blog/2022/02/21/sprin ... eradapter/. Однако результат оказался не таким, как ожидалось (возможность доступа к серверу eureka с именем пользователя и паролем).
Прежде чем начать, представьте, что я только что вылупился из яйца и учусь вставать. Вот насколько я новичок в микросервисах. В настоящее время я просматриваю руководство по микросервисам на YouTube и застрял на разделе «Защита микросервисов с помощью KeyCloak». Это руководство, которому я следую: . Я застрял на 3:20:40. Парень говорит, что нам нужно включить какой-то механизм аутентификации для сервера обнаружения (базовая аутентификация). Затем он создает класс конфигурации для сервера обнаружения (Netflix-eureka) и реализует вот что:
@Configuration @EnableWebSecurity общественный класс SecurityConfig расширяет WebSecurityConfigurerAdapter { @Value("${eureka_username}") личное имя пользователя String; @Value("${eureka_password}") личный строковый пароль; @Override public void configure (AuthenticationManagerBuilder аутентификацияManagerBuilder) выдает исключение { аутентификацияManagerBuilder.inMemoryAuthentication() .passwordEncoder(NoOpPasswordEncoder) .withUser(имя пользователя).пароль(пароль) .authorities("ПОЛЬЗОВАТЕЛЬ"); } @Бин public SecurityFilterChain filterChain(HttpSecurity http) выдает исключение { http.csrf() .запрещать() .authorizeRequests() .Любой запрос() .аутентифицированный() .и() .httpBasic(); вернуть http.build(); } } Теперь, поскольку WebSecurityConfigurerAdapter устарел, я попробую вместо этого этот подход:
@Configuration @EnableWebSecurity общественный класс SecurityConfig { @Value("${eureka_username}") личное имя пользователя String; @Value("${eureka_password}") личный строковый пароль; @Бин общественный BCryptPasswordEncoder bCryptPasswordEncoder() { вернуть новый BCryptPasswordEncoder(); } @Бин public UserDetailsService userDetailsService (BCryptPasswordEncoder bCryptPasswordEncoder) { Менеджер InMemoryUserDetailsManager = новый InMemoryUserDetailsManager(); Manager.createUser(User.withUsername(имя пользователя) .password(bCryptPasswordEncoder.encode(пароль)) .roles("ПОЛЬЗОВАТЕЛЬ") .строить()); менеджер по возврату; } @ Бин public SecurityFilterChain filterChain(HttpSecurity http) выдает исключение { http.csrf() .запрещать() .authorizeRequests() .Любой запрос() .аутентифицированный() .и() .httpBasic(); вернуть http.build(); } Однако мои микросервисы (сервис продуктов, сервис заказов и сервис инвентаризации) не могут зарегистрироваться на сервере обнаружения. Мой сервер обнаружения доступен по адресу http://localhost:8080/eureka/web до настройки безопасности, и теперь, как и ожидалось, меня просят ввести имя пользователя и пароль по тому же URL-адресу, но когда я ввожу имя пользователя и пароль, Я получаю сообщение об ошибке «Неверные учетные данные». Я не знаю, что делать, и застрял здесь на 2 дня. Я очень хочу учиться и ценю всех, кто откликается и помогает мне изучить что-то новое.
PS: если вам нужна дополнительная информация о проекте, которая поможет вам помочь мне, укажите это в комментариях, и я ее предоставлю. Спасибо!
Я попробовал следовать этому: https://spring.io/blog/2022/02/21/sprin ... eradapter/. Однако результат оказался не таким, как ожидалось (возможность доступа к серверу eureka с именем пользователя и паролем).
Мобильная версия