![](https://img-blog.csdnimg.cn/20191105140137683.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Spring Security
文章平均质量分 75
Spring Security 是一个专注于向 Java 应用程序提供身份验证和授权的安全框架,与所有 Spring 项目一样,Spring Security 的真正威力在于它可以很容易地扩展以满足定制需求。
Young丶
这个作者很懒,什么都没留下…
展开
-
Spring Security 源码分析:Spring Security 授权过程
Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了Spring IoC,DI(控制反转Inversion of Control ,DI:Dependency Injection 依赖注入)和AOP(面向切面编程)功能,为应用系统提供声明式的安全访问控制功能,减少了为企业系统安全控制编写大量重复代码的工作。1. 前言本文是接上一章Spring Security源码分析一.原创 2020-11-10 15:35:24 · 795 阅读 · 0 评论 -
大白话详解Spring Security认证流程
Spring Seuciry相关的内容看了实在是太多了,但总觉得还是理解地不够巩固,还是需要靠知识输出做巩固。原创 2020-11-04 10:35:26 · 2775 阅读 · 2 评论 -
Spring Security 之方法级的权限管控 @PreAuthorize 使用详解
默认情况下, Spring Security 并不启用方法级的安全管控. 启用方法级的管控后, 可以针对不同的方法通过注解设置不同的访问条件.Spring Security 支持三种方法级注解, 分别是 JSR-205 注解 /@Secured 注解 / prePostEnabled 注解. 这些注解不仅可以直接加 controller 方法上, 也可以注解 Service 或 DAO 类中的方法.原创 2024-01-22 09:02:33 · 15884 阅读 · 0 评论 -
深入浅出Spring Security(三):FilterChainProxy的运行过程
上篇回顾我们已经知道了Spring Security的核心过滤器的创建和原理,本文主要介绍核心过滤器FilterChainProxy是如何在tomcat的ServletContext中生效的。ServletContext如何拿到FilterChainProxy的过滤器对象我们都知道,Bean都是存在Spring的Bean工厂里的,而且在Web项目中Servlet、Filter、Listener都要放入ServletContext中。看下面这张图,ServletContainerInitial转载 2021-02-05 16:00:54 · 1034 阅读 · 0 评论 -
深入浅出Spring Security(二):FilterChainProxy的创建过程
上篇回顾框架的核心是一个过滤器,这个过滤器名字叫springSecurityFilterChain,类型是FilterChainProxyWebSecurity和HttpSecurity都是建造者WebSecurity构建目标是FilterChainProxy对象HttpSecurity的构建目标仅仅是FilterChainProxy中的一个SecurityFilterChain。@EnableWebSecurity注解,导入了WebSecurityConfiguration类WebSecur转载 2021-02-05 15:59:39 · 1216 阅读 · 0 评论 -
深入浅出Spring Security(一):三句话解释框架原理
三句话解释框架原理整个框架的核心是一个过滤器,这个过滤器名字叫springSecurityFilterChain类型是FilterChainProxy核心过滤器里面是过滤器链(列表),过滤器链的每个元素都是一组URL对应一组过滤器WebSecurity用来创建FilterChainProxy过滤器,HttpSecurity用来创建过滤器链的每个元素。框架接口设计关注两个东西:建造者和配置器框架的用法就是通过配置器对建造者进行配置框架用法是写一个自定义配置类,继承WebSecurityC转载 2021-02-05 13:52:38 · 1837 阅读 · 0 评论 -
Spring Context 你真的懂了吗?
今天介绍一下大家常见的一个单词 context 应该怎么去理解,正确的理解它有助于我们学习 spring 以及计算机系统中的其他知识。1. context 是什么我们经常在编程中见到 context 这个单词,当然每个人有每个人的理解,它被理解为:上下文、容器等等。我想说的是,context 理解为上下文最为合适。为什么呢?我以一个在计算机系统的例子来解释一下。在计算机系统中,进程执行时有进程上下文,如果进程在执行的过程中遇到了中断,CPU 会从用户态切换为内核态(当然这个过程用户进程是感知不到的.原创 2020-11-16 22:32:58 · 1894 阅读 · 0 评论 -
SpringSecurity实战:基于mysql自定义SpringSecurity权限认证规则
上文《Spring Security 源码分析:Spring Security 授权过程》已经详细分析了Spring Security 授权过程,接下来通过上文的授权过程我们可以自定义授权流程,从而实现基于Mysql的RBAC动态权限1.权限管理 在本例中所使用的权限管理的思路如下图所示,在系统中存在着许多帐号,同时存在着许多资源,在一个Web系统中一个典型的资源就是访问页面的URL,控制了这个就能够直接控制用户的访问权。由于资源非常多,直接针对资源与用户进行设置关系会比较繁琐,因此针对同一类.原创 2020-11-13 11:01:59 · 1860 阅读 · 0 评论 -
Spring Security原理之springSecurityFilterChain
在上篇文章中,已经大概交代了一下三个地方spring security启动WebSecurityConfiguration主要做了两件事情:1.根据WebSecurityConfigurerAdapter中配置的信息创建WebSecurity这个类2.springSecurityFilterChain()创建了一个名叫springSecurityFilterChain的过滤器,然后值得一提的是在调用WebSecurity的build()创建过滤器的时候,调用到了WebSecurity的init()方法原创 2020-11-11 14:33:09 · 6878 阅读 · 0 评论 -
透过源码详解Spring Security 初始化流程
Spring Security在3.2版本之后支持Java Configuration,即:通过Java编码形式配置Spring Security,可不再依赖XML文件配置,本文采用Java Configuration方式。在Spring Security官方文档中有一个最简配置例子:import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.annotation.*原创 2020-11-11 14:21:44 · 960 阅读 · 1 评论 -
浅谈CSRF攻击方式
一.CSRF是什么?CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSRF/XSRF。## 二.CSRF可以做什么?你这可以这么理解CSRF攻击:攻击者盗用了你的身份,以你的名义发送恶意请求。CSRF能够做的事情包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账…造成的问题包括:个人隐私泄露以及财产安全。三.CSRF漏洞现状CSRF这种攻击方式在20原创 2020-11-10 15:27:55 · 680 阅读 · 0 评论 -
SpringBoot 2 + Spring Security 5 + JWT 的单页应用 Restful 解决方案
此前我已经写过一篇类似的教程,但那时候使用了投机的方法,没有尊重 Spring Security 的官方设计,自己并不感到满意。这段时间比较空,故重新研究了一遍。特性使用 JWT 进行鉴权,支持 token 过期使用 Ehcache 进行缓存,减少每次鉴权对数据库的压力尽可能贴合 Spring Security 的设计实现注解权限控制准备开始本教程的时候希望对下面知识点进行粗略的了解。知道 JWT 的基本概念了解过 Spring Security本项目中 JWT 密钥是使用用户自原创 2020-11-10 13:28:51 · 1711 阅读 · 2 评论 -
Spring Security 进阶干货:自定义配置类入口WebSecurityConfigurerAdapter
1. 前言今天我们要进一步的的学习如何自定义配置 Spring Security 我们已经多次提到了 WebSecurityConfigurerAdapter ,而且我们知道 Spring Boot 中的自动配置实际上是通过自动配置包下的 SecurityAutoConfiguration 总配置类上导入的 Spring Boot Web 安全配置类 SpringBootWebSecurityConfiguration 来配置的。所以我们就拿它开刀。2. 自定义 Spring Boot Web 安全配置转载 2020-10-22 13:59:53 · 870 阅读 · 0 评论 -
9.Spring Security添加记住我功能
在网站的登录页面中,记住我选项是一个很常见的功能,勾选记住我后在一段时间内,用户无需进行登录操作就可以访问系统资源。在Spring Security中添加记住我功能很简单,大致过程是:当用户勾选了记住我选项并登录成功后,Spring Security会生成一个token标识,然后将该token标识持久化到数据库,并且生成一个与该token相对应的cookie返回给浏览器。当用户过段时间再次访问系统时,如果该cookie没有过期,Spring Security便会根据cookie包含的信息从数据库中获取相应的原创 2020-09-17 16:54:30 · 1340 阅读 · 0 评论 -
8.Spring Security 权限控制
Spring Security 权限控制Spring Security 权限控制可以配合授权注解使用,具体有哪些注解可以参考 Spring-Security 保护方法。接着上一节,要开启这些注解,只需要在 Spring Security 配置文件中添加如下注解:@Configuration@EnableGlobalMethodSecurity(prePostEnabled = true)p...原创 2019-11-05 13:56:29 · 548 阅读 · 0 评论 -
7.Spring Security 退出登录
Spring Security 退出登录Spring Security 默认的退出登录 URL 为/logout,退出登录后,Spring Security 会做如下处理:使当前的 Sesion 失效;清除与当前用户关联的 RememberMe 记录;清空当前的 SecurityContext;重定向到登录页。Spring Security 允许我们通过配置来更改上...原创 2019-11-05 13:55:50 · 759 阅读 · 0 评论 -
6.Spring Security Session 管理
Spring Security Session 管理用户登录成功后,信息保存在服务器 Session 中,这节学习下如何管理这些 Session。这节将在 Spring Security 短信验证码登录的基础上继续扩展。Session 超时设置Session 超时时间也就是用户登录的有效时间。要设置 Session 超时时间很简单,只需要在配置文件中添加:server: session...原创 2019-11-05 13:54:47 · 7432 阅读 · 1 评论 -
5.Spring Security 短信验证码登录
Spring Security 短信验证码登录在 Spring Security 添加图形验证码一节中,我们已经实现了基于 Spring Boot + Spring Security 的账号密码登录,并集成了图形验证码功能。时下另一种非常常见的网站登录方式为手机短信验证码登录,但 Spring Security 默认只提供了账号密码的登录认证逻辑,所以要实现手机短信验证码登录认证功能,我们需要模...原创 2019-11-05 13:52:50 · 1452 阅读 · 0 评论 -
4.Spring Security 添加图形验证码
Spring Security 短信验证码登录在 Spring Security 添加图形验证码一节中,我们已经实现了基于 Spring Boot + Spring Security 的账号密码登录,并集成了图形验证码功能。时下另一种非常常见的网站登录方式为手机短信验证码登录,但 Spring Security 默认只提供了账号密码的登录认证逻辑,所以要实现手机短信验证码登录认证功能,我们需要模...原创 2019-11-05 13:51:44 · 1665 阅读 · 2 评论 -
3.Spring Security 自定义用户认证
Spring Security自定义用户认证自定义认证过程自定义认证的过程需要实现Spring Security提供的UserDetailService接口,该接口只有一个抽象方法loadUserByUsername,源码如下:public interface UserDetailsService { UserDetails loadUserByUsername(String use...原创 2019-11-05 13:50:51 · 960 阅读 · 0 评论 -
2.Spring Security 用户注销 与 Thymeleaf 权限控制
Spring Security 用户注销 与 Thymeleaf 权限控制Spring Security 用户注销1、上一篇《Spring Security 详细简绍与入门》中内存用户从浏览器访问时已经如下认证与授权:zhangWuJi 可以访问 addUser、deleteUser、updateUser、findAllUsers 方法guoJing 可以访问 deleteUser、up...原创 2019-11-05 13:50:03 · 739 阅读 · 0 评论 -
Spring Boot 2.3 中开启Spring Security
Spring Security是一款基于Spring的安全框架,主要包含认证和授权两大安全模块,和另外一款流行的安全框架Apache Shiro相比,它拥有更为强大的功能。Spring Security也可以轻松的自定义扩展以满足各种需求,并且对常见的Web安全攻击提供了防护支持。如果你的Web框架选择的是Spring,那么在安全方面Spring Security会是一个不错的选择。这里我们使用Spring Boot来集成Spring Security,Spring Boot版本为2.3.3.RELEAS原创 2020-09-10 17:48:01 · 2300 阅读 · 1 评论 -
1.Spring Security 详细简绍与入门
Spring Security1、Java web 应用中安全框架使用率高的莫过于:spring-security:https://spring.io/projects/spring-securityApache Shiro :http://shiro.apache.org/2、Spring Security 是 Spring 官网的顶级项目,与 spring boo...原创 2019-11-05 13:48:31 · 578 阅读 · 0 评论