Spring Security学习笔记

Spring Security是一个基于Spring的企业应用系统提供对访问权限进行控制解决方式的安全框架,应用的安全性包括“用户认证”和“用户授权”。

用户认证指的是验证某个用户是否为系统中的合法主体,也就是说用户能否访问该系统。用户认证一般要求用户提供用户名和密码。系统通过校验用户名和密码来完成认证过程。用户授权指的是验证某个用户是否有权限执行某个操作。在一个系统中,不同用户所具有的权限是不同的。比如对一个文件来说,有的用户只能进行读取,而有的用户可以进行修改。一般来说,系统会为不同的用户分配不同的角色,而每个角色则对应一系列的权限。 

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

身份认证的方式包含以上五种。

 

 

流程

想要对对Web资源进行保护,最好的办法莫过于Filter,springSecurity在我们进行用户认证以及授予权限的时候,提供了以下的拦截器来控制权限的访问,从而实现安全。

 SecurityContextPersistenceFilter :是承接容器的session与spring security的重要filter,主要工作是从session中获取SecurityContext,然后放到上下文中,之后的filter大多依赖这个来获取登录态。其主要是通过HttpSessionSecurityContextRepository来存取的。

 LogoutFilter:从SecurityContext中获取Authentication,然后调用每个handler处理logout,退出成功后跳转到指定的url。

 ExceptionTranslationFilter:用来处理AuthenticationException和AccessDeniedException两种异常。AuthenticationException指的是未登录状态下访问受保护资源,AccessDeniedException指的是登陆了但是由于权限不足

SessionManagementFilter:提供两大类功能:

1、session固化保护-通过session-fixation-protection配置 

2、session并发控制-通过concurrency-control配置 

 FilterChainProxy

 

UserDetails和Authentication区别:

UserDetails:Spring Security基础接口,包含某个用户的账号,密码,权限,状态(是否锁定)等信息。只有getter方法。

Authentication:认证对象,认证开始时创建,认证成功后存储于SecurityContext

spring Security缓存

Spring Security提供了一个实现了UsrtDetailsService的缓存类CachingUserDetailsService。当需要真正加载UsrtDetails时,会首先从换成中获取,如果缓存中没有对应的UsrtDetails存在,则使用持有的UsrtDetailsService实现类进行加载,然后将加载后的结果存放在缓存中,UsrtDetails与缓存的交互式通过UserCache接口来实现的,CachingUserDetailsService默认拥有一个UserCache的空引用实现NullUserCache。当缓存中不存在对应的UsrtDetails时,将使用引用的UsrtDetailsService类型的delgate来加载,加载后存放在缓存中,并返回。除了NullUserCache,Spring Security还为我们提供了EhCacheBasedUserCache。

自定义决策管理器

SpringSecurity目前提供了三个决策投票器,第一个是AffirmativeBased,它的策略是一票通过,只要有一个投票器通过就允许访问;第二个是ConConsensusBased,它的策略是有一半以上投票通过,才允许访问资源;第三个UnanimousBased,它的策略是所有投票器都通过,才允许访问资源。当我们自定义角色管理器时,我们继承AbstractAccessDecisionManager这个类即可,并不是一定要使用投票器,也可以根据需要使用自己的投票器。如果我们访问某个资源,需要同时拥有两个或两个以上权限的情况时,我们就需要自定义AccessDecisionVoter来实现。

spring Security优点:

提供了一套安全框架,而且这个框架是可以用的;

提供了很多用户认证的功能,实现相关接口即可,节约大量开发时间;

基于spring,易于集成到spring项目,且封装了许多方法

spring Security缺点:

配置文件多。角色被“编码”到配置文件和源文件中,RBAC不明显;

对于系统中用户,角色,权限之间的关系没有可操作界面;

大数据量情况下几乎不可用

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值