一 、概述
SpringSecurity是Spring大家族的成员之一,主要是做授权和认证的。里面包括了一系列认证的逻辑和权限的控制。在没有SpringBoot之前SpringSecurity配置起来还是很麻烦的而且它看起来比shiro更加重量级。所以之前用到shiro还是更多一点。但是后面由于SpringBoot的成熟他和SpringSecurity整合起来更加的方便,所以SpringSecurity也开始流行了起来。
二、原理
有以下三点
-
授权
-
认证
-
攻击防护
其核心就是一组过滤器链,项目启动后将会自动配置。最核心的就是 Basic Authentication Filter 用来认证用户的身份,一个在spring security中一种过滤器处理一种认证方式。
会检查是否是一个登录请求;
是否包含username 和 password (也就是该过滤器需要的一些认证信息) ;
如果不满足则放行给下一个。
下一个按照自身职责判定是否是自身需要的信息,basic的特征就是在请求头中有 Authorization:Basic eHh4Onh4 的信息。中间可能还有更多的认证过滤器。最后一环是 FilterSecurityInterceptor,这里会判定该请求是否能进行访问rest服务,判断的依据是 BrowserSecurityConfig中的配置,如果被拒绝了就会抛出不同的异常(根据具体的原因)。Exception Translation Filter 会捕获抛出的错误,然后根据不同的认证方式进行信息的返回提示。