0%

Spring Security结构

Spring Security结构

Spring Security3.2分为11个模块,如下表所示:

模块 描述
ACL 支持通过访问控制列表(access control list)为域对象提供安全性
切面 当使用Spring security注解时,会使用基于AspectJ的切面,而不是标准的SpringAOP
CAS客户端 提供与Jasig的中心认证服务(Central Authentication Service)进行集成的功能
配置Configuration 包含通过XML和JAVA配置SpringSecurity的功能支持
核心core 基本库
加密Cryptograph 提供加密和密码编码功能
LDAP 支持基于LDAP进行认证
OpenId 支持使用OpenId镜像集中式认证
Remoting 提供了对Spring Remoting 的支持
标签库Tag Lib Jsp标签库
Web 提供基于Filter的web安全性支持

编写简单的安全性配置

Spring Security3.2引入了新的Java配置方案,完全不在需要通过XML来配置安全性功能。如下,展现了Spring Security最简单的Java配置:

1
2
3
4
5
package spitter.config;
......
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter{}

@EnableWebSecurity注解将会启动Web安全功能,但它本身并没有什么功能。Spring Security必须配置在一个实现了WebSecurityConfigurer的bean中,或者扩展WebSecurityConfigurerAdapter,扩展该类是最简单的配置方法。
这样做有以下几点好处:

  • a、该注解配置了一个Spring MVC参数解析器(argument
    resolver),这样处理器方法能够通过带有@AuthenticationPrincipal注解的参数获得认证用户的principal(或username)。
  • b、它配置了一个bean,在使用Spring表单绑定标签库来定义表单时,这个bean会自动添加一个隐藏的跨站请求伪造token输入域。

我们可以通过重载WebSecurityConfigurerAdapter中的一个或多个方法来指定Web安全的细节。例如WebSecurityConfigurerAdapter的三个configure()方法。详情如下表:

方法 描述
configure(WebSecurity) 配置Filter链
configure(HttpSecurity) 配置如何通过拦截器保护请求
configure(AuthenticationManagerBuilder) 配置userDetail服务

上面的程序清单中没有重写任何一个configure()方法,所以应用现在是被严格锁定的,没有任何人能够进入系统。为了让Spring Security满足我们应用的需求,还需要再添加一点配置。具体来讲,我们需要:

  • a、配置用户存储
  • b、指定哪些请求需要认证,哪些请求不需要认证,以及需要的权限。
  • c、提供一个自定义的登录页面,替代原来简单的默认登录页

来源

SpringSecurity学习笔记之二:SpringSecurity结构及基本配置