Добавление весенней безопасности в сервис Zuul в микросервисе весенней загрузки

Я новичок в архитектуре микросервисов. У нас есть несколько служб, таких как служба zuul (шлюз API), служба безопасности (подключение к проверке доступа к базе данных) и служба xyz.

Я хотел бы знать, как мы можем добавить Spring безопасность к маршрутам, определенным в сервисе zuul. ?

При определении authorizeRequests, как показано ниже, в службе zuul, он должен вызвать службу безопасности изнутри и аутентифицировать запросы.

Пример:

.authorizeRequests()
.antMatchers("/user/count").permitAll()
.antMatchers("/user/**").authenticated()

Примечание. Конечная точка / user определяется в службе безопасности.

Пожалуйста, помогите мне с этим.

0
0
992
1

Ответы 1

Наш прокси-сервер Zuul поддерживает безопасность OAuth2. Вот пример конфигурации безопасности:

@Configuration
@EnableResourceServer
public class JwtSecurityConfig extends ResourceServerConfigurerAdapter {

    @Override
   public void configure(HttpSecurity http) throws Exception {
       http.authorizeRequests()
            .antMatchers("/oauth/**").permitAll()
            .antMatchers("/**").hasAuthority("ROLE_API_ACCESS")
            .and()
            .csrf().disable();
   }
}

Я предполагаю, что если вы выполняете базовую аутентификацию, вы можете сделать что-то подобное, используя соответствующий класс. Может что-то вроде этого.

@Configuration
@Order(SecurityProperties.ACCESS_OVERRIDE_ORDER)
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        BasicAuthenticationEntryPoint authenticationEntryPoint = new BasicAuthenticationEntryPoint();

authenticationEntryPoint
   .setRealmName("EnterpriseDeviceAuthentication");
        http
            .authorizeRequests()
            .antMatchers("/health").permitAll() // allow access to health page
            .antMatchers("/somepath").permitAll()
            .antMatchers("/somepath2").permitAll()
            .antMatchers("/bootstrap.min.css").permitAll() 
            .anyRequest().hasAnyAuthority(SecurityRoles.ALL_SECURITY_ROLES)
            .and().httpBasic()
            .authenticationEntryPoint(authenticationEntryPoint)
            .and()
            .csrf().disable();
    }

}

Другие вопросы по теме