草庐IT

springsecurity-shiro

全部标签

【Spring】图解SpringSecurity的RememberMe流程

    Yan-英杰的主页悟已往之不谏知来者之可追  C++程序员,2024届电子信息研究生目录前言        原理基础版        搭建初始化sql依赖引入配置类验证源码分析进阶版        集成        源码分析疑问1疑问2        鉴权升级版        集成初始化sql配置类验证        源码分析        鉴权流程扩展版前言        如图就是博客园登陆时的“记住我”选项,在实际开发登陆接口以前,我一直认为这个“记住我”就是把我的用户名和密码保存到浏览器的cookie中,当下次登陆时浏览器会自动显示我的用户名和密码,就不用我再次输入了。    

SpringSecurity登录验证没有权限的问题(403)

问题重现SpringSecurityConfig配置登录验证拦截,并放行登录验证及生成二维码的url。调用postman测试接口,发现可以获取验证码。但当进行登录验证的时候就报了403错误,没有走过滤器,而是是直接走了配置中的accessDeniedHandler方法,返回403。当使用get接口发现走了过滤器,但是因为SpringSecurity规定了登录验证必须走post,所以登录失败。但为什么post方法直接走403呢?原因后来查阅资料发现,因为SpringSecurity开启了CSRF跨站防护,(SpringSecurity在2.0之后就会默认自动开启)。一旦开启了CSRF,所有经过s

SpringSecurity小白教程

目录一、权限管理简介1、什么是权限管理2、认证3、授权二、权限管理解决方案1、基于角色的访问控制2、基于资源的访问控制三、SpringSecurity概述1,SpringSecurity简介2、SpringSecurity快速入门2.1、引入依赖2.2、创建一个控制器2.3、启动项目四、SpringSecurity认证配置1、WebSecurityConfigurerAdapter2、UserDetailsService3、SpringSecurity自带的表单认证五、鉴权配置1、鉴权配置2、使用注解实3、登录返回处理4、鉴权的异常处理5、退出操作一、权限管理简介1、什么是权限管理基本上涉及到

SpringSecurity学习记录(WebSecurityConfigurerAdapter被弃用,SecurityConfig新玩法)

目录0、写在前面1、简介2、起步3、认证3.1、认证流程的理解3.2、认证思路3.3、认证实现4、授权4.1、授权的介绍4.2、授权的实现5、写在最后0、写在前面    项目要用,本人不会,遂有此文。仅用于个人交流学习使用,侵权删。1、简介    SpringSecurity是一个安全管理框架,和Shiro相比,功能丰富,资源丰富。    因此,中大型项目使用SpringSecurity,小型项目使用Shiro。    SpringSecurity主要需要学习两方面内容:    认证:验证当前访问系统的是不是系统的用户,并确定是哪个用户。    授权:经过认证之后,判断当前用户是否具有进行某个

Shiro身份验证绕过漏洞及修复方案

近期Shiro修复了一个身份验证绕过漏洞(CVE-2022-40664),1.10.0之前的版本在请求forward或include时不进行拦截鉴权。 下方测试代码,方法1(noauth)不需要权限,方法2(needauth)配置了authc,方法1转发方法2,则可以绕过方法2的鉴权。/***不需要身份验证(鉴权)的方法*/@RequestMapping(value="/shiro/noauth",method=RequestMethod.GET)publicStringnoauth(){return"forward:needauth";}/***需要身份验证(鉴权)的方法*/@Request

深入理解Shiro反序列化原理

前言Shiro是一个功能强大且易于使用的Java安全框架,提供全面的身份验证、授权、密码管理和会话管理功能。它支持多种认证方式,如基于表单、HTTP基本身份验证和RememberMe。授权模型灵活,可细粒度限制访问控制,保护敏感数据和功能。安全会话管理功能确保会话安全,包括记住我功能和会话超时设置。无论是Web应用还是其他Java应用,Shiro都是可靠的选择,增加应用程序的安全性。在shiro-core库中实现了对认证授权等的抽象,以提供对不同环境的认证和授权。如shiro-web依赖就是对在shiro-core库的技术上进行扩展实现web应用的认证和授权等。在shiro-core库中包括S

【security】java springboot项目中使用springSecurity安全框架

第一步,创建springboot的web项目,并导入springSecurity的pom依赖org.springframework.bootspring-boot-starter-securityorg.springframework.bootspring-boot-starter-webspringboot项目如果导入security依赖后会自动托管整个项目,前端在访问项目的任何路径时会被拦截并跳转到security默认的登录页面,登录用户名为user,密码为控制台启动项目时生成的随机密码第二步自定义设置用户的认证和请求权限设置一、自定义设置用户的认证:创建一个配置类(类上加@Configu

Apache Shiro反序列化漏洞研究及解决方法

前言一个阳光明媚的午休,我正惬意的喝着茶听着音乐,享受美好生活的时候,客户的QQ头像闪动了,原以为是出了什么新需求临时需要调整,没想到客户反馈的是平台出现了严重漏洞,不敢小视,抄起电脑开弄我根据客户给出的安全厂商反馈的问题,总结如下:1,Shiro反序列化漏洞2,提到了dnslog.cn平台了解Shiro反序列化漏洞参考官方的JIRA文档记录,https://issues.apache.org/jira/browse/SHIRO-550原因是Shiro的RememberMe出的问题官方也给出了问题的描述大概的意思就是:Shiro提供了RememberMe的功能,当用户关闭浏览器,下次再打开浏览

SpringSecurity:认证和自定义登陆界面

目录配置解决中文乱码问题认证直接认证使用数据库认证自定义登录界面替换默认的登陆界面关闭csrf防护配置配置初始化器publicclassSecurityInitializerextendsAbstractSecurityWebApplicationInitializer{//不用重写任何内容 //这里实际上会自动注册一个Filter,SpringSecurity底层就是依靠N个过滤器实现的}创建一个配置类用于配置SpringSecurity@Configuration@EnableWebSecuritypublicclassSecurityConfigurationextendsWebSecu

SpringSecurity框架跳过加密步骤直接验证用户密码

说明正常流程程序内获取到用户的username和password,构造User对象,框架自动对密码进行加密然后和数据库中的密码作比较,得出结果。特殊场景如果这里的密码是密文(直接从数据库中获得),那么你在构造User对象的时候,框架会再加密一遍,这样和库中密码匹配的时候肯定是错误的。如何不让框架对密码加密直接匹配呢?在password字段前添加{noop}即可,这样后面会直接使用你传入的密码(不会再次加密)进行操作。@OverridepublicUserDetailsloadUserByUsername(Stringusername)throwsUsernameNotFoundExceptio