Spring Security核心原理

Spring Security是Spring生态系统的一个安全组件,而且和Spring MVC整合非常方便。Spring Security最基本的原理是基于J2EE的拦截器原理,拦截器会形成一个拦截器链,这是一种责任链设计模式。Spring Security使用实现的一些拦截器来对访问的url进行拦截,通过对缓存中的角色进行相应判定后决定是否能url访问权限。

当一个URL请求到来时,Spring Security的AuthenticationProcessingFilter过滤器会拦截这个请求,在验证的过程中,会调用ProviderManager来获取角色的相应信息,而ProviderManager的角色信息可以是配置在XML文件中的,也可以要去查询数据库。验证通过后相关的权限信息就封装到一个角色对象中,并缓存到Security的全局缓存SecurityContextHolder中,下次再有拦截请求到来时就可以直接查询缓存中是否已有相应的权限信息了,如果已经有了,就直接放行,如果没有就调用非法访问处理。一个资源有可能需要具有多个权限,或是权限需要到达多少个,这都可以进行相关的权限策略进行配置,当进行权限验证的时候,AbstractSecurityInterceptor会调用FilterInvocationSecurityMetadataSource来获取访问这个url所需要的所有权限,再通过前面
提到的SecurityContextHolder获取角色信息,进行相关权限匹配。这些类名都比较长,但这样的好处是见名知意。

Spring Security的原理总体来说还是比较简单的,但是内部实现其实还是非常复杂的,主要是因为要保证Security框架的低耦合性和高扩展性,Security框架不能重度依赖Web框架的数据,也不能把太多数据暴露给Web框架,低耦合性可以保证Security框架本身的安全性和可拔插性,因此Spring Security框架有自己独立的数据缓存上下文。Spring Security还提供ProviderManager来增加框架的可扩展性,因为不知道真实的业务场景角色信息从哪里来,因此可以通过ProviderManger来管理权限角色信息,以此来降低数据提供层和应用逻辑层之间的耦合,当需要其他数据来源的时候,可自行配置自己实现,并实现相应的接口即可。

再来说Spring Security和Spring整合的事情。由于Spring Security的可配置性,因此可以无缝地和Spring进行整合。利用Spring的DI和AOP特性,可以进一步提高Security对业务场景的适应能力。Spring Security与Spring进行整合后,可完美兼容Spring MVC,并且可以像Spring一样基于xml文件或者java注解来进行配置,这样大大简化了开发的难度。在实际开发中,可以把Spring Security所需要的对象配置成相应的bean对象注入到Spring容器中,这样整个项目的风格一致,具有更好的可阅读性和更强的可管理性。

Spring Security 原理相关推荐

  1. Spring Security原理分析

    本文来简单的分析下Spring Security 使用原理.在前面的几节中,已经对 Spring Security 有了一个比较全的使用体验了,这节我们简单的介绍下 Spring Security 基 ...

  2. Spring Security原理之springSecurityFilterChain

    在上篇文章中,已经大概交代了一下三个地方 spring security启动WebSecurityConfiguration主要做了两件事情: 1.根据WebSecurityConfigurerAda ...

  3. spring security原理

    spring security通过一系列过滤器实现其功能,入口过滤器如下(web.xml): <filter> <filter-name>springSecurityFilte ...

  4. Spring Security原理与应用

    Spring Security是什么 Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架.它提供了一组可以在Spring应用上下文中配置 ...

  5. spring security原理和机制 | Spring Boot 35

  6. Spring Security 玩出花!两种方式 DIY 登录

    Spring Security 玩出花!两种方式 DIY 登录 一般情况下,我们在使用 Spring Security 的时候,用的是 Spring Security 自带的登录方案,配置一下登录接口 ...

  7. 初识Spring Security

    最近来写下Spring Security 文章目录 初识Spring Security 什么是Spring Security 常用安全框架 如何学习Spring Security 本文小结 初识Spr ...

  8. Spring Security OAuth2.0认证授权知识概括

    Spring Security OAuth2.0认证授权知识概括 安全框架基本概念 基于Session的认证方式 Spring Security简介 SpringSecurity详解 分布式系统认证方 ...

  9. spring security技术分享

    Spring Security技术专题 一.初识认证和授权 1.1 认证 1.2 会话 1.3 授权 1.4 授权的数据模型 1.5 RBAC 1.5.1 角色访问控制 1.5.2 资源访问控制 1. ...

  10. Spring Security应用详解(集成SpringBoot)

    Spring Security应用详解 集成SpringBoot 工作原理 认证流程 授权流程 集成SpringBoot 1.Spring Boot介绍 Spring Boot是一套Spring的快速 ...

最新文章

  1. AI录音笔一战成名!搜狗以语言AI为核心重点突破多点开花
  2. 【数字信号处理】线性常系数差分方程 ( 根据 “ 线性常系数差分方程 “ 与 “ 边界条件 “ 确定系统是否是 “ 线性时不变系统 “ 案例 | 根据 “ 线性时不变系统 “ 定义证明 )
  3. [图解]小白都能看懂的FASTER R-CNN – 原理和实现细节
  4. 解密双十一小程序云背后毫秒级伸缩的Serverless计算平台:函数计算
  5. 【复赛前排分享(一)】上分有路勤为径,大神教你剖析提分点
  6. POJ 3268 Bookshelf 2 动态规划法题解
  7. python自动打开网页_python 自动打开浏览器
  8. 苹果6怎样分屏_皮皮喵最新版下载安卓版更新 0.2.6
  9. 怎么学好高中数学高一数学学习方法有哪些
  10. 2021年茶艺师(中级)考试及茶艺师(中级)考试题
  11. Python自动化运维之1、Python入门
  12. java 微信接收消息_Java后台与微信公众号交互----接收并处理微信客户端发送的请求...
  13. ROS 交叉编译介绍
  14. EDA笔记(4)--语言要素
  15. 提升团队客户服务技能的6个秘诀
  16. 2018年 吉林大学 软件工程 967考研经验分享
  17. 基于DCT变换图像去噪算法的进一步优化(100W像素30ms)
  18. PC端无线连接打印机
  19. 谷歌前量子部门“单飞”,正式成立量子软件公司Sandbox AQ
  20. 泛微e-office删除多余邮件

热门文章

  1. 线性代数知识点(行列式篇)
  2. c语言基础课程包括啥,推荐收藏!C语言入门基础知识大全
  3. 扩展欧几里得算法超详解
  4. OSS 下载文件名乱码
  5. input输入框自动去除空格
  6. 中职学校实验室安全整改总结报告
  7. 电子信息技术专业名词中英文对照(三)
  8. TM1640 数码管驱动代码(简化版)
  9. 说明波特率和比特率的关系---再谈一下编码的关系
  10. win10-用户忘记密码如何登录