Spring Security 学习总结

  Spring Security

  Spring Security是基于Spring提供声明式安全保护的安全性框架。Spring Security提供了完整的安全性解决方案,能够在Web请求级别和方法调用级别处理身份认证和授权。

  Spring Security从两个角度来解决安全性问题:

  1. 使用Servlet规范中的Filter保护Web请求并限制URL级别的访问;
  2. 使用Spring AOP保护方法调用——借助于动态代理和使用通知,确保只有具备适当权限的用户才能访问安全保护的方法。

  Spring Security被分为了11个模块:

模块 描述
ACL(access control list) 支持通过访问控制列表(ACL)为域对象提供安全性
切面(Aspects) 当使用Spring Security注解时,会使用基于AspectJ的切面,而非标准的AOP
CAS(Central Authentication Service)客户端 提供与Jasig的中心认证服务(CAS)进行集成的功能
配置(Configuratiion)* 包含通过XML和Java配置Spring Security的功能支持
核心(Core)      * 提供Spring Security基本库
加密(Cryptography) 提供了加密和密码编码的功能
LDAP 支持基于LDAP进行认证
OpenID 支持使用OpenID进行集中式认证
Remoting 提供了对Spring Remoting的支持
标签库(Tag Library) Spring Security的JSP标签库
Web 提供了Spring Security基于Filter的Web安全性支持

  过滤Web请求

  Spring Security基于DelegatingFilterProxy实现其安全性需要的过滤功能。DelegatingFilterProxy是一个特殊的Servlet Filter,主要将工作委托给一个javax.servlet.Filter实现类,实现类将作为一个bean注册在Spring应用的上下文中。

  Java配置方式,配置DelegatingFilterProxy:

public class SecurityWebInitializer extends
                 AbstractSecurityWebApplicationInitializer {}    
  AbstractSecurityWebApplicationInitializer 实现了 WebApplicationInitializer ,因此将被Spring容器并注册 DelegatingFilterProxy。实现类可以重载抽象类中的appendFilters()或insertFilters()方法来注册自己选择的Filter,但如果只是注册DelegatingFilterProxy的话,不需要重载任何方法。  完成配置DelegatingFilterProxy后,它就会拦截发往应用中的请求,并将请求委托给ID为springSecurityFilterChain的Bean。
  springSecurityFilterChain本身是另一个特殊的Filter,也叫 FilterChainProxy。它可以链接任意一个或多个其他的Filter。Spring Security依赖一系列Servlet Filter来提供不同的安全特性。实际开发中,只需要显式声明springSecurityFilterChain以及它所链接的Filter即可。启动Web安全性时将自动创建。    

简单的安全性配置--基于Java配置 
@Configuration
@EnableWebSecurity // 启用Web安全性
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    /**
     * 简单的默认配置:指定该如何保护HTTP请求
     * @param http
     * @throws Exception
     */
    protected void configure(HttpSecurity http) throws Exception {
        http
                .authorizeRequests()
                .anyRequest().authenticated()
                .and()
                .formLogin().and()
                .httpBasic();
    }

}

  @EnableWebSecurity注解将会启用Web安全功能,ps:Spring Security必须配置在一个实现了WebSecurityConfigurer的bean中,或者扩展 WebSecurityConfigurerAdapter 。

 具体的Web安全细节,将通过重写WebSecurityConfigurerAdapter 中的一个或多个方法来实现,如其中的三个configure()方法来配置Web安全性,具体通过传递的参数设置行为。
重写WebSecurityConfigurerAdapter的configure()方法
方法 描述
configure(WebSecurity) 通过重写,配置Spring Security的Filter链
configure(HttpSecurity) 通过重写,配置如何通过拦截器保护请求
configure(AuthenticationManagerBuilder) 通过重写,配置user-detail服务
  示例代码中进行了简单的默认配置,指定如何保护HTTP请求,以及客户端认证用户的方案。调用authorizeRequests()和anyRequest().authenticated()就会要求所有进入应用的HTTP请求都要进行认证。formLogin()和httpBasic()则配置了对表单登录和HTTP Basic方式的支持。  注意:因为没有重写configure(AuthenticationManagerBuilder)方法,所以没有用户存储支撑认证过程。进而所有的请求都要认证,且没人可成功登陆。  后续需要的配置如下:
  1. 配置用户存储
  2. 指定具体需要认证的请求及所需权限
  3. 提供自定义登陆页面
  4. 基于安全限制,设置选择性地在Web视图上显示特定的内容

user-detail服务 **

  优势:内置了多种常见的用户存储场景,如内存、关系型数据库以及LDAP,能够基于各种数据存储来认证用户。  

原文地址:https://www.cnblogs.com/nyatom/p/9057015.html

时间: 2024-11-06 05:58:35

Spring Security 学习总结的相关文章

[转]Spring Security学习总结一

[总结-含源码]Spring Security学习总结一(补命名空间配置) Posted on 2008-08-20 10:25 tangtb 阅读(43111) 评论(27)  编辑  收藏 所属分类: Spring .Spring Security Spring Security学习总结一 在认识Spring Security之前,所有的权限验证逻辑都混杂在业务逻辑中,用户的每个操作以前可能都需要对用户是否有进行该项 操作的权限进行判断,来达到认证授权的目的.类似这样的权限验证逻辑代码被分散

[转]Spring Security学习总结二

原文链接: http://www.blogjava.net/redhatlinux/archive/2008/08/20/223148.html http://www.blogjava.net/redhatlinux/archive/2008/09/01/226010.html [总结-含源码]Spring Security学习总结二 Posted on 2008-09-01 10:08 tangtb 阅读(9518) 评论(12)  编辑  收藏 所属分类: Spring .Spring Se

Spring Security学习总结

1.Spring Security介绍  一般来说,Web 应用的安全性包括用户认证(Authentication)和用户授权(Authorization)两个部分. 用户认证指的是验证某个用户是否为系统中的合法主体,也就是说用户能否访问该系统.用户认证一般要求用户提供用户名和密码.系统通过校验用户名和密码来完成认证过程. 用户授权指的是验证某个用户是否有权限执行某个操作.在一个系统中,不同用户所具有的权限是不同的.比如对一个文件来说,有的用户只能进行读取,而有的用户可以进行修改.一般来说,系统

Spring Security 学习总结(2) 持续更新中

从一个最简单的Spring Security Java Configuration 看起 @Configuration @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter {     @Autowired     public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {    

spring security 学习文档

web service Prepared by:   Sea                                                                                                                                                            29 April, 2018 Contents 1.             The description of spring

spring security 学习二

doc:https://docs.spring.io/spring-security/site/docs/ 基于表单的认证(个性化认证流程): 一.自定义登录页面 1.在securityConfigy配置类中的config方法中添加调用链方法 @Override protected void configure(HttpSecurity http) throws Exception { http.formLogin()//指定是表单登录 .loginPage("/cus_login.html&q

spring security学习,你妹真难

http://liukai.iteye.com/blog/982088 http://blog.csdn.net/jaune161/article/details/18350183 http://docs.spring.io/spring-security/site/docs/3.2.5.RELEASE/reference/htmlsingle/#mvc

Spring Security 学习笔记-授权控制过滤器

FilterSecurityInterceptor  是比较核心的过滤器,主要负责授权工作.SecurityMetadataSource 需要安全授权的元数据资源 AuthenticationManager 认证管理器,决策访问资源的时候是否需要再次认证.AccessDesisionManager 访问决策管理器,决策是否有权限访问. 下图说明之间的调用关系:

spring securtty学习 (三)图片验证码认证

图片验证码,在spring security 学习(二)用户认证自定义上添加. 具体步骤相对来说简单分为三步:生成图片验证码.显示给用户输入,登陆认证中加入校验验证码: 添加验证依赖 <!-- 验证码 --><dependency> <groupId>org.springframework.social</groupId> <artifactId>spring-social-config</artifactId></depend