在spring boot微服务中为Zuul服务添加spring安全性

时间:2018-03-13 14:26:05

标签: spring spring-boot spring-security netflix-zuul

我是微服务架构的新手。 我们的服务很少,比如zuul服务(api网关),安全服务(连接数据库检查访问)和xyz服务。

我想知道,我们如何为zuul服务中定义的路由添加spring security。 ?

在zuul服务上定义如下所示的authorizeRequests时,它应该在内部调用安全服务并验证请求。

示例:

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

注意:/ user端点在安全服务中定义。

请帮助我。

1 个答案:

答案 0 :(得分:0)

我们的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();
   }
}

我会假设如果你正在做基本的auth,你可以使用适当的类做类似的事情。也许是这样的。

@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();
    }

}