spring security 入门教程 详细讲解

1 什么是spring security?

一个能够为基于Spring的企业应用系统提供声明式的安全訪问控制解决方式的安全框架(简单说是对访问权限进行控制)。

应用的安全性包括用户认证(Authentication)和用户授权(Authorization)两个部分。

用户认证指的是验证某个用户是否为系统中的合法主体,也就是说用户能否访问该系统。

用户认证一般要求用户提供用户名和密码。系统通过校验用户名和密码来完成认证过程。

用户授权指的是验证某个用户是否有权限执行某个操作。在一个系统中,不同用户所具有的权限是不同的。

比如对一个文件来说,有的用户只能进行读取,而有的用户可以进行修改。

一般来说,系统会为不同的用户分配不同的角色,而每个角色则对应一系列的权限。   

spring security的主要核心功能为 认证和授权,所有的架构也是基于这两个核心功能去实现的。

2 框架简介

众所周知想要对Web资源进行保护,最好的办法莫过于Filter,要想对方法调用进行保护,最好的办法莫过于AOP。所以springSecurity在我们进行用户认证以及授予权限的时候,通过各种各样的拦截器来控制权限的访问,从而实现安全。

spring Security功能的实现主要是由一系列过滤器链相互配合完成

 

1.springSecurityFilterChain中各个过滤器怎么创建的只需了解即可。不要太过关注。

2.重点记忆UsernamePasswordAuthenticationFilter,ExceptionTranslationFilter, FilterSecurityInterceptor这三个过滤器的作用及源码分析。

3.重点记忆认证中Authentication,AuthenticationManager,ProviderManager, AuthenticationProvider,UserDetailsService,UserDetails这些类的作用及源码分析。

4.重点记忆授权中FilterInvoction,SecurityMetadataSource,AccessDecisionManager的作用。

3 框架的核心组件

  SecurityContextHolder:提供对SecurityContext的访问

  SecurityContext,:持有Authentication对象和其他可能需要的信息

  AuthenticationManager 其中可以包含多个AuthenticationProvider

  ProviderManager对象为AuthenticationManager接口的实现类

  AuthenticationProvider 主要用来进行认证操作的类 调用其中的authenticate()方法去进行认证操作

  Authentication:Spring Security方式的认证主体

  GrantedAuthority:对认证主题的应用层面的授权,含当前用户的权限信息,通常使用角色表示

 UserDetails:构建Authentication对象必须的信息,可以自定义,可能需要访问DB得到

  UserDetailsService:通过username构建UserDetails对象,通过loadUserByUsername根据userName获取UserDetail对象

  (可以在这里基于自身业务进行自定义的实现  如通过数据库,xml,缓存获取等)

4 工作流程是怎样的?

 

认证流程:

 

授权流程:

 

5 ***怎么用? - demo

6 有什么特点/ 优点?

 

1.将用户登录,权限控制分离出来,达到和其他控制、逻辑代码完全分离。
2.在控制、逻辑代码里面,可以通过spring容器的到我们登录用户的信息,可插拔性的体现。
3.自定义的权限控制访问,不但是对某个URL可操控,同时可以对某个方法进行控制。
4.提供一些登录相关的操作,如记住我、登录成功跳转页面设定等等。
5.安全控制性好,对并发session可控性好。

 

7 如何做到权限控制??从大方面 一直到 代码细节,由表及里来说

 

posted @ 2020-06-01 18:41  Caesar_the_great  阅读(10735)  评论(0编辑  收藏  举报