菜鸟求问 ZuulFilter 是否跟 Spring security 中的 WebSecurityConfigurerAdapter 的功能存在重叠?

2020-05-16 22:01:08 +08:00
 demonzoo

最近学习 Spring boot 的时候被 Spring security 和 Zuul 里面的 ZuulFilter 弄迷糊了。

我个人理解,我们的微服务模块可以继承 spring security 里面的 WebSecurityConfigurerAdapter,在里面 override 其 configure 方法实现对请求 url 的控制。

比如很多例子里面都有类似这样的代码:

@Override
protected void configure(HttpSecurity security) throws Exception {
	http.csrf().disable()
	.exceptionHandling()
	.authenticationEntryPoint((request,response,authException)->response.sendError(HttpServletResponse.SC_UNAUTHORIZED))
	.and()
	.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
	.and()
	.authorizeRequests()
        .antMatchers("/api/login/**")
        .permitAll()
        .anyRequest()
        .authenticated()
        .and()
        .httpBasic();
	}

这段代码就对 login API 进行了放行,而对其它 api 进行验证。

而在看 ZuulFilter 的时候,我发现其实也可以在 ZuulFilter 里面 override shouldFilter 方法也实现 url 的过滤,而且可以在 filter 里面拿到 header 中的 token 从而进行验证。

比如如下这样的代码也可以实现对 login API 的放行,同样也可以从 request header 里面取出 token 进行验证:

@Override
public boolean shouldFilter() {
	RequestContext requestContext = RequestContext.getCurrentContext();
        HttpServletRequest request = requestContext.getRequest();
        String requestURI = request.getRequestURI();
        
        return !"/api/login".equalsIgnoreCase(requestURI);
}

所以我想问一下各位 spring 大佬,用了配置好 ZuulFilter 的网关是否就不需要再配置 spring security 了?还是说两者仍然有一些区别,有共存的价值?大家在实际项目中是如何应用的?

多谢!

2007 次点击
所在节点    Java
3 条回复
liamyoung
2020-05-16 22:27:44 +08:00
Zuul 是网关,Spring Security 是认证、授权和其他安全功能的框架。可以在网关层面实现一些通用的安全功能,但是想针对某一个服务 定制具体的安全策略,还是需要依靠 Spring Security 来实现。
demonzoo
2020-05-17 08:41:09 +08:00
@liamyoung 有道理,多谢回复。你的意思也就是说 zuul 网关确实可以不用 spring security,但是其它微服务模块还是需要用 spring security 的,对吧?
pkwenda
2020-05-21 13:33:50 +08:00
网关层面可以做一些,限流、反爬虫、调用链监控入口、请求合并,日志标记等一些事情。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/672436

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX