Я новичок в архитектуре микросервисов. У нас есть несколько служб, таких как служба zuul (шлюз API), служба безопасности (подключение к проверке доступа к базе данных) и служба xyz.
Я хотел бы знать, как мы можем добавить Spring безопасность к маршрутам, определенным в сервисе zuul. ?
При определении authorizeRequests, как показано ниже, в службе zuul, он должен вызвать службу безопасности изнутри и аутентифицировать запросы.
Пример:
.authorizeRequests()
.antMatchers("/user/count").permitAll()
.antMatchers("/user/**").authenticated()
Примечание. Конечная точка / user определяется в службе безопасности.
Пожалуйста, помогите мне с этим.
Наш прокси-сервер 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();
}
}