Spring Security

spring boot整合spring security笔记

自闭症网瘾萝莉.ら 提交于 2020-04-28 06:55:22
最近自己做了一个小项目,正在进行springboot和spring Security的整合,有一丢丢的感悟,在这里分享一下: 首先,spring boot整合spring security最好是使用Thymleaf,因为spring boot官方支持使用thymleaf,这样的话,整合起来会方便很多,而且,thymleaf也支持静态加载,比jsp方便许多。那么: 第一步:需要先引入thymleafh和spring security的依赖(如果是web项目需要引入对应的jar包) <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> 第二步:在java配置类中去对spring security进行配置(也可以在xml中进行配置, 不过,spring boot比较推荐在代码中进行配置,所以顺势而为了,就在代码中 进行配置) /** *

Spring cloud微服务安全实战-5-7实现基于session的SSO(客户端应用的Session有效期)

浪子不回头ぞ 提交于 2020-04-28 02:42:36
授权模式改造成了Authorization code完成了改造的同时也实现了SSO。微服务环境下的前后端分离的单点登陆。 把admin的服务重启。刷新页面 并没有让我去登陆,直接就进入了首页。 order的API控制台 只要你在认证服务器上的session没过期。认证服务器就知道你是谁,他就不会让你输入用户名密码了。直接跳回到客户端应用。 一共有三个有效期。 退出操作 退出的时候。现在前端服务器清空session,认证服务器也需要清空session 在前端服务器退出后,再跳转到认证服务器执行退出。logout是spring security默认的退出路径 这时候跳转到了认证服务器。 点击退出后 如果再次输入账号密码登录 这时候没跳转会前端, 这是个404的页面。 这是因为我们之前触发的登陆页面的请求,是下面这样的一个请求 这里他是不知道是要跳转回admin的应用的,所以默认进去了自己的主页。 :9090/根目录,这个主页没做任何的处理 所以是一个404页面。 退出操作优化 退出的时候加一个参数redirect_uri 认证服务器改造 首先要找到处理logout这个请求的代码。 它会拦截logout的方法,然后 拦住以后会生成一个页面出来。 页面上很简单,上面一个提示语,问题你是不是确认要退出。点了按钮就会提交这个表单。 我们来复制这个类,首先在我们的代码里面建一个一模一样的包

SpringBoot有多重要?面试用SpringBoot把面试官唬住了要30k都行

我与影子孤独终老i 提交于 2020-04-27 17:28:24
Java程序员为什么一定要会Spring Boot? 随着近年来微服务的流行,越来越多的企业需要快速的开发,而Spring Boot除了以注解为主的开发,还有其他的绑定,例如,对服务器进行了绑定和绑定和默认对Spring的最大化配置,所以开发者能够尽快进行开发代码、发布和测试自己的项目,这符合了现今微服务快速开发、测试和部署的需要,于是越来越多的企业选择Spring Boot作为开发的选型,进而使得Spring Boot更加兴旺起来,而今面试大厂Spring Boot都是必问的技术点,所以Java开发一定要对Spring Boot有深入的了解。 怎么学习Spring Boot?给各位老铁分享一些自己收藏的Spring Boot资料吧。希望各位老铁能够好好学习 天天向上! 一份是来自阿里P8大牛手撸的《Spring Boot2教程》 一份是《深入浅出Spring Boot2》书籍电子版 一份是《Spring Boot技术好文精选整理》 转发+关注,加我VX【tkzl6666】获得这三份Spring Boot资料的免费领取方式。 阿里P8大牛手撸的《Spring Boot2教程》内容概述 纯Java搭建SSM项目 创建一个Spring Boot项目的三种方法 理解Spring Boot项目中的parent 理解Spring BootP配置文件app1ication.properties

Spring Security 是如何在 Servlet 应用中执行的?

纵饮孤独 提交于 2020-04-27 11:19:17
Spring Security 是一个强大的认证和授权框架,它的使用方式也非常简单,但是要想真正理解它就需要花一时间来学习了,最近在学习 Spring Security 时有一些新的理解,特意记录下来防止知识忘记的太快,毕竟好记性不如烂笔关,也给即将准备学习 Spring Security 的同志做一个参考。 由于我在学习和使用是基于 Servlet Applications 的,所以文中的大部分都与 Servlet 相关,当然 Spring Security 还支持 Reactive Applications 功能上都是一样,在架构上会有一些差别,有兴趣的同学可以自行查看官方文档。 Spring Securty 在 Servlet Applications 中的应用 以下部分内容摘自官方文档 Servlet Filter Chain 提到 Servlet Filter Chain 应该都熟悉的吧,它们是一系列由 javax.servlet.Filter 实现类组成的一个链,大致图如下所示: 上图中Client发送Http请求,然后请求经过 FilterChain ,每个匹配的 Filter 都有机会处理request和response对象,最终请求会到达servlet(如何filter中没有特殊处理的情况下)。 Spring Security 的实现简单来说,就是往

基于spring的安全管理框架-Spring Security

风流意气都作罢 提交于 2020-04-26 12:19:46
基于spring的安全管理框架-Spring Security 什么是spring security? spring security是基于spring的安全框架.它提供全面的安全性解决方案,同时在Web请求级别和调用级别确认和授权.在Spring Framework基础上,spring security充分利用了依赖注入(DI)和面向切面编程(AOP)功能,为应用系统提供声明式的安全访问控制功能,建晒了为企业安全控制编写大量重复代码的工作,是一个轻量级的安全框架,并且很好集成Spring MVC spring security的核心功能有哪些? 1 认证 :认证用户 2 验证: 验证用户是否有哪些权限,可以做哪些事情 spring security基于哪些技术实现? Filter,Servlet,AOP实现 框架技术准备: IDEA 2017.3 ,MAVEN 3+ ,springboot 2.2.6 spring security 5.2.2, JDK 8+ spring security初步集成使用 创建一个基于Maven的spring boot项目,引入必需依赖 父级依赖 <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-parent</artifactId> <version>2.2.6

springboot深入学习(二)-----profile配置、运行原理、web开发

不问归期 提交于 2020-04-24 17:00:37
profile配置 通常企业级应用都会区分开发环境、测试环境以及生产环境等等。spring提供了全局profile配置的方式,使得在不同环境下使用不同的applicaiton.properties,走不同的配置。 模板:application-{profile}.properties 示例: 程序会根据application.properties文件中配置的spring.profiles.active=xxx的值,找到对应的application-xxx.properties中具体的属性值 当springboot项目打成jar包之后,可以直接通过命令方式执行,如下: java -jar xxx.jar --spring.profiles.active=test 这样就是将当前项目运行模式调整为test,从而找到不同的application-xxx.properties文件。 springboot运行原理 springboot关于自动配置的源码在spring-boot-autoconfigure.jar中,查看源码可以到此包。 @SpringBootApplication的核心功能其实是由@EnableAutoConfiguration注解提供,源码如下: 原理这块这篇文章讲的不错: https://www.cnblogs.com/shamo89/p/8184960.html

SpringBoot整合升级Spring Security 报错 【The request was rejected because the URL was not normalized】

 ̄綄美尐妖づ 提交于 2020-04-24 15:52:39
前言 最近LZ给项目框架升级, 从Spring1.x升级到Spring2.x, 在这里就不多赘述两个版本之间的区别以及升级的原因。 关于升级过程中踩的坑,在其他博文中会做比较详细的记录,以便给读者参考,不要掉进同样的坑里。 这里我们讨论一个关于URL中包含双斜杠被拦截的问题。 发现问题 升级框架之后,测试一个功能时,发现报错Http 500, 第一时间怀疑是后台功能报错。打印后台错误日志,发现报错信息:The request was rejected because the URL was not normalized。 之后与升级前相同环境对比发现,相同的功能, 升级之后,URL中包含双斜杠。 分析问题 经过对比不同和错误信息,初步定位问题出在URL上。查询资料得知,Spring Security 在高版本中增加了StrictHttpFirewall类,对URL校验更加严格。于是查看源码: <code> private static boolean isNormalized(String path) { if (path == null) { return true; } else if (path.indexOf("//") > -1) { return false; } else { int i; for(int j = path.length(); j > 0; j = i

The request was rejected because the URL contained a potentially malicious String ";"报错解决

谁都会走 提交于 2020-04-24 15:51:25
报错信息 浏览器中看到的报错 错误摘要: The request was rejected because the URL contained a potentially malicious String ";" 从控制台看到的报错 2019-09-09 10:39:30,149 ERROR (DirectJDKLog.java:182)- Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception org.springframework.security.web.firewall.RequestRejectedException: The request was rejected because the URL contained a potentially malicious String ";" at org.springframework.security.web.firewall.StrictHttpFirewall.rejectedBlacklistedUrls(StrictHttpFirewall.java:265) at org.springframework.security.web.firewall.StrictHttpFirewall

The request was rejected because the URL contained

二次信任 提交于 2020-04-24 11:46:21
@[TOC](org.springframework.security.web.firewall.RequestRejectedException: The request was rejected because the URL contained a potentially malicious String "%3B") org.springframework.security.web.firewall.RequestRejectedException: The request was rejected because the URL contained a potentially malicious String "%3B" 错误代码如上,意思时请求URL中有非法字符“;”原因是SpringSecurity的防火墙中默认将分号,双斜线等特殊字符屏蔽掉了, 解决办法: 第一种:去掉url中的分号,双斜线等特殊字符(推荐) 第二种:自定义防火墙规则,放行分号; @Bean public HttpFirewall allowUrlEncodedSlashHttpFirewall() { StrictHttpFirewall firewall = new StrictHttpFirewall(); firewall.setAllowSemicolon(true); return

JavaWeb-SpringSecurity自定义登陆页面

北战南征 提交于 2020-04-24 09:20:44
  系列博文   项目已上传至guthub   传送门   JavaWeb-SpringSecurity初认识   传送门   JavaWeb-SpringSecurity在数据库中查询登陆用户   传送门    JavaWeb-SpringSecurity自定义登陆页面    传送门   JavaWeb-SpringSecurity实现需求-判断请求是否以html结尾   传送门   JavaWeb-SpringSecurity自定义登陆配置   传送门   JavaWeb-SpringSecurity图片验证ImageCode   传送门   JavaWeb-SpringSecurity记住我功能   传送门   JavaWeb-SpringSecurity使用短信验证码登陆   传送门   在static文件夹下添加一个login.html,作为自定义登陆页面    <! DOCTYPE html > < html > < head > < meta charset ="UTF-8" > < title > Insert title here </ title > </ head > < body > < h1 > Gary登陆页面 </ h1 > < form action ="/loginPage" method ="post" > 用户名: < input type =