一.前言 Spring Security 和 Apache Shiro 都是安全框架,为Java应用程序提供身份认证和授权. 二者区别 Spring Security:重量级安全框架 Apache Shiro:轻量级安全框架 关于shiro的权限认证与授权可参考小编的另外一篇文章 : SpringBoot集成Shiro 实现动态加载权限 https://blog.csdn.net/qq_38225558/article/details/101616759 二.SpringBoot集成Spring…
Spring Security 入门(基本使用) 这几天看了下b站关于 spring security 的学习视频,不得不说 spring security 有点复杂,脑袋有点懵懵的,在此整理下学习内容. 1.入门 1.1.什么是 spring security spring security 是一个比 shiro 更加强大的安全管理框架,权限颗粒度更细. 源自于 spring 家族,能跟 springboot 无缝整合,对 oauth2 的支持也更好. 1.2.依赖配置 <dependency…
1.Spring Security是什么? Spring Security 是一个安全框架,前身是 Acegi Security , 能够为 Spring企业应用系统提供声明式的安全访问控制. Spring Security 基于 Servlet 过滤器. IoC和AOP , 为 Web 请求和方法调用提供身份确认和授权处理,避免了代码耦合,减少了大量重复代码工作. Spring Security 提供了若干个可扩展的.可声明式使用的过滤器处理拦截的web请求. 在web请求处理时, Sprin…
一.Spring Security简介 Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架.它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了Spring IoC,DI(控制反转Inversion of Control ,DI:Dependency Injection 依赖注入)和AOP(面向切面编程)功能,为应用系统提供声明式的安全访问控制功能,减少了为企业系统安全控制编写大量重复代码的工作. Spring se…
我们在篇(一)中已经谈到了默认的登录页面以及默认的登录账号和密码. 在这一篇中我们将自己定义登录页面及账号密码. 我们先从简单的开始吧:设置自定义的账号和密码(并非从数据库读取),虽然意义不大. 上一篇中,我们仅仅重写了 configure(HttpSecurity http) 方法,该方法是用于完成用户授权的. 为了完成自定义的认证,我们需要重写 configure(AuthenticationManagerBuilder auth) 方法. public class WebSecurityC…
当你看到这篇文章时,我猜你肯定是碰到令人苦恼的问题了,我希望本文能让你有所收获. 本人几个月前还是 Spring 小白,几个月走来,看了 Spring,Spring boot,到这次的 Spring Security. 为了避免大家踩坑,本人将入门的经验传授给那些和我一样正在学习 Spring Security 的小白. 我们从官方例子学习起: 1.我们先来创建一个 Spring Boot 的项目 HelloWorld: 我用的开发工具是 eclipse,如果没装 STS 的话,请点击 Help…
简介 作为 Spring 全家桶组件之一,Spring Security 是一个提供安全机制的组件,它主要解决两个问题: 认证:验证用户名和密码: 授权:对于不同的 URL 权限不一样,只有当认证的用户拥有某个 URL 的需要的权限时才能访问. Spring Security 底层使用的是过滤器,针对 URL 进行的拦截,对应到 Java 中也就是类; 因此被称为粗粒度授权验证,就是验证 URL ,当前用户是否有这个 URL 的权限. 入门 创建项目 使用 Idea 创建 Spring Boot…
1.权限操作涉及的三张表 (1)用户表信息描述users sql语句: CREATE TABLE users ( id ) DEFAULT SYS_GUID () PRIMARY KEY, email ) UNIQUE NOT NULL, username ), PASSWORD ), phoneNum ), STATUS INT ) (2)角色表描述role sql语句: CREATE TABLE role ( id ) DEFAULT SYS_GUID () PRIMARY KEY, rol…
1.Spring Security介绍 Spring Security是基于spring的应用程序提供声明式安全保护的安全性框架,它提供了完整的安全性解决方案,能够在web请求级别和方法调用级别 处理身份证验证和授权.它充分使用了依赖注入和面向切面的技术. Spring security主要是从两个方面解决安全性问题: web请求级别:使用servlet过滤器保护web请求并限制URL级别的访问 方法调用级别:使用Spring AOP保护方法调用,确保具有适当权限的用户采用访问安全保护的方法.…
1.三种表决方式,默认是 一票制AffirmativeBased public interface AccessDecisionManager { /** * 通过传递的参数来决定用户是否有访问对应受保护对象的权限 * @param authentication 当前正在请求受包含对象的Authentication * @param object 受保护对象,其可以是一个MethodInvocation.JoinPoint或FilterInvocation. * @param configAtt…
Servlet过滤器被用来拦截用户请求来进行请求之前或之后的处理,或者干脆重定向这个请求,这取决于servlet过滤器的功能. Servlet过滤器处理之后的目标servlet是 MVC 分发web servlet. servlet请求按照一定的顺序从一个过滤器到下一个穿过整个过滤器链,最终到达目标servlet.与之相对的是,当servelt处理完请求并返回一个response时,过滤器链按照相反的顺序再次穿过所有的过滤器. Spring Security利用Spring在XML配置文件中的自…
参考链接:https://xueliang.org/article/detail/20170302232815082 session 管理 Spring Security 通过 http 元素下的子元素 session-management 提供了对 Http Session 管理的支持. 检测 session 超时 Spring Security 可以在用户使用已经超时的 sessionId 进行请求时将用户引导到指定的页面.这个可以通过如下配置来实现. <security:http> ..…
Remember-Me 功能 概述 Remember-Me 是指网站能够在 Session 之间记住登录用户的身份,具体来说就是我成功认证一次之后在一定的时间内我可以不用再输入用户名和密码进行登录了,系统会自动给我登录.这通常是通过服务端发送一个 cookie 给客户端浏览器,下次浏览器再访问服务端时服务端能够自动检测客户端的 cookie,根据 cookie 值触发自动登录操作.Spring Security 为这些操作的发生提供必要的钩子,并且针对于 Remember-Me 功能有两种实现.…
匿名认证 对于匿名访问的用户,Spring Security 支持为其建立一个匿名的 AnonymousAuthenticationToken 存放在 SecurityContextHolder 中,这就是所谓的匿名认证.这样在以后进行权限认证或者做其它操作时我们就不需要再判断 SecurityContextHolder 中持有的 Authentication 对象是否为 null 了,而直接把它当做一个正常的 Authentication 进行使用就 OK 了. 配置 使用 NameSpace…
要实现退出登录的功能我们需要在 http 元素下定义 logout 元素,这样 Spring Security 将自动为我们添加用于处理退出登录的过滤器 LogoutFilter 到 FilterChain. 当我们指定了 http 元素的 auto-config 属性为 true 时 logout 定义是会自动配置的, 此时我们默认退出登录的 URL 为 "/j_spring_security_logout",可以通过 logout 元素的 logout-url 属性来改变退出登录的…
Spring Security 的底层是通过一系列的 Filter 来管理的,每个 Filter 都有其自身的功能,而且各个 Filter 在功能上还有关联关系,所以它们的顺序也是非常重要的. 1.Spring Security的内置Filter 执行顺序 Spring Security 已经定义了一些 Filter,不管实际应用中你用到了哪些,它们应当保持如下顺序. ChannelProcessingFilter,如果你访问的 channel 错了,那首先就会在 channel 之间进行跳转,…
http元素下可以配置登录页面,也可以配置 url 拦截. 1.直接配置拦截url和对应的访问权限 <security:http use-expressions="false"> <security:form-login />     <security:logout />     <security:intercept-url pattern="/secure/**" access="ROLE_USER,ROLE…
1.用户信息从数据库获取 通常我们的用户信息都不会向第一节示例中那样简单的写在配置文件中,而是从其它存储位置获取,比如数据库.根据之前的介绍我们知道用户信息是通过 UserDetailsService 获取的,要从数据库获取用户信息,我们就需要实现自己的 UserDetailsService.幸运的是像这种常用的方式 Spring Security 已经为我们做了实现了. 使用 jdbc-user-service 获取 在 Spring Security 的命名空间中在 authenticati…
理解时可结合一下这位老兄的文章:http://www.importnew.com/20612.html 1.Spring Security的认证过程 1.1.登录过程 - 如果用户直接访问登录页面 用户使用用户名和密码进行登录. Spring Security 将获取到的用户名和密码封装成一个实现了 Authentication 接口的 UsernamePasswordAuthenticationToken. 将上述产生的 token 对象传递给 AuthenticationManager 进行…
登录表单配置 - http 元素下的 form-login 元素是用来定义表单登录信息的.当我们什么属性都不指定的时候 Spring Security 会为我们生成一个默认的登录页面. 如果不想使用默认的登录页面,我们可以指定自己的登录页面. 1.使用自定义登录页面和为登录页面放行 1.1.使用自定义登录页面 自定义登录页面是通过 login-page 属性来指定的.提到 login-page 我们不得不提另外几个属性. username-parameter:表示登录时用户名使用的是哪个参数,默…
1.Spring Security 的配置文件 我们需要为 Spring Security 专门建立一个 Spring 的配置文件,该文件就专门用来作为 Spring Security 的配置. <beans xmlns="http://www.springframework.org/schema/beans" xmlns:security="http://www.springframework.org/schema/security" xmlns:xsi=&…
参考链接,多谢作者: http://blog.csdn.net/lee353086/article/details/52586916 http元素下的form-login元素是用来定义表单登录信息的. 当我们什么属性都不指定的时候Spring Security会为我们生成一个默认的登录页面. 如果不想使用默认的登录页面,我们可以指定自己的登录页面. 一.form-login元素介绍  1.使用自定义登录页面 自定义登录页面是通过login-page属性来指定的.提到login-page我们不得不…
1.决策管理器的运行原理: 2.Spring Security提供的决策管理器实现 3.用户自定义的决策管理器…
一.前言 因项目需要引入spring security权限框架,而之前也没接触过这个一门,于是就花了点时间弄了个小demo出来,说实话,刚开始接触这个确实有点懵,看网上资料写的权限大都是静态,即就是在配置文件或代码里面写定角色,不能动态更改,个人感觉这样实际场景应该应用的不多,于是就进一步研究,整理出了一个可以动态管理个人权限角色demo,其中可能有很多不足或之处,还望指正.本文通过spring boot集成spring security,处理方式没有使用xml文件格式,而是用了注解. 二.表结…
序:本文主要参考 spring实战 对里面的知识做一个梳理 1.Spring Security介绍 Spring Security是基于spring的应用程序提供声明式安全保护的安全性框架,它提供了完整的安全性解决方案,能够在web请求级别和方法调用级别处理身份证验证和授权.它充分使用了依赖注入和面向切面的技术. Spring security主要是从两个方面解决安全性问题: web请求级别:使用servlet过滤器保护web请求并限制URL级别的访问 方法调用级别:使用Spring AOP保护…
目录 从一个Spring Security的例子开始 创建不受保护的应用 加入spring security 保护应用 关闭security.basic ,使用form表单页面登录 角色-资源 访问控制 获取当前登录用户信息 小结 Spring Security 核心组件 SecurityContext SecurityContextHolder Authentication UserDetails UserDetailsService AuthenticationManager 小结 Spri…
1. 环境搭建 使用SpringBoot搭建开发环境,只需在pom.xml添加如下依赖即可. <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocat…
前言 本文作为入门级的DEMO,完全按照官网实例演示: 项目目录结构 Maven 依赖 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.4.1.RELEASE</version> </parent> <dependencie…
首先是使用的SpringBoot框架 基础需要的pom以来如下,基础的springboot项目的创建就不一一赘述了. <!--spring web--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!--jpa 对数据库操…
本文是一个笔记系列,目标是完成一个基于角色的权限访问控制系统(RBAC),有基本的用户.角色.权限管理,重点在Spring Security的各种配置.万丈高楼平地起,接下来,一步一步,由浅入深,希望给一起学习的小伙伴一个参考. 1.  Hello Security 按照惯例,先写个Hello World 首先,引入依赖 1 <dependency> 2 <groupId>org.springframework.boot</groupId> 3 <artifact…