Spring Security

Spring Security 实战干货:自定义配置类入口WebSecurityConfigurerAdapter

China☆狼群 提交于 2019-12-01 12:17:05
1. 前言 今天我们要进一步的的学习如何自定义配置 Spring Security 我们已经多次提到了 WebSecurityConfigurerAdapter ,而且我们知道 Spring Boot 中的自动配置实际上是通过自动配置包下的 SecurityAutoConfiguration 总配置类上导入的 Spring Boot Web 安全配置类 SpringBootWebSecurityConfiguration 来配置的。所以我们就拿它开刀。如果还是一头雾水建议通过 https://felord.cn 查看 Spring Security 实战 。 2. 自定义 Spring Boot Web 安全配置类 我们使用我们最擅长的 Ctrl + C 、 Ctrl + V 抄源码中的 SpringBootWebSecurityConfiguration ,命名为我们自定义的 CustomSpringBootWebSecurityConfiguration : @Configuration @ConditionalOnClass(WebSecurityConfigurerAdapter.class) @ConditionalOnWebApplication(type = ConditionalOnWebApplication.Type.SERVLET) public class

Java服务端Cors跨域资源共享配置,解决与Spring Security冲突引起的问题

老子叫甜甜 提交于 2019-12-01 06:04:36
(一) CORS介绍 CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing)。 它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制。 response响应头: 响应头字段名称 作用 Access-Control-Allow-Origin 允许访问的客户端的域名 Access-Control-Allow-Credentials 是否允许请求带有验证信息,若要获取客户端域下的cookie时,需要将其设置为true。 Access-Control-Allow-Headers 允许服务端访问的客户端请求头 Access-Control-Allow-Methods 允许访问的HTTP请求方法 Access-Control-Max-Age 用来指定预检请求的有效期(秒),在有效期内不在发送预检请求直接请求。 Cors详细介绍请看阮一峰的 跨域资源共享 CORS 详解 (二) 服务端配置CORS(Spring boot) 简单粗暴,直接写个filter拦截所有请求在response头里加上面的字段. 继承WebMvcConfigurerAdapter重写addCorsMappings public class CorsConfig extends

Spring Security 实战干货:动态权限控制(下)实现  

浪子不回头ぞ 提交于 2019-11-30 22:41:17
1. 前言 Spring Security 实战干货:内置 Filter 全解析 中提到的第 32 个 Filter 不知道你是否有印象。它决定了访问特定路径应该具备的权限,访问的用户的角色,权限是什么?访问的路径需要什么样的角色和权限? 它就是 FilterSecurityInterceptor ,正是我们需要的那个轮子。 2.FilterSecurityInterceptor 过滤器排行榜第 32 位!肩负对 http 接口权限认证的重要职责。我们来看它的过滤逻辑: public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { FilterInvocation fi = new FilterInvocation(request, response, chain); invoke(fi); } 初始化了一个 FilterInvocation 然后被 invoke 方法处理: public void invoke(FilterInvocation fi) throws IOException, ServletException { if ((fi.getRequest() != null)

ApiBoot零代码整合Spring Security的JDBC方式获取AccessToken

泄露秘密 提交于 2019-11-30 19:38:29
ApiBoot Security 内部提供了 两种方式 进行读取需要认证的用户信息,在之前的文章中讲到过 ApiBoot Security 使用 内存方式(memory) 不写一行代码 就可以实现用户的认证并获取 AccessToken ,那我们使用 JDBC 方式是不是也是这么的简单呢? 如果你还对 ApiBoot 不了解,可以通过以下的途径来获取帮助。 官方文档: http://apiboot.minbox.io 源码: https://gitee.com/minbox-projects/api-boot ApiBoot Security的认证方式 有一些同学可能对 ApiBoot Security 的两种认证方式还不太了解,下面介绍下这两种认证方式的区别。 内存方式 内存方式(memory) 是将用户信息(用户名、密码、角色列表)在 application.yml 文件内配置,可配置多个用户,项目启动后将用户信息加载到内存中,用于获取 AccessToken 时的认证。 数据库方式 数据库方式(jdbc) 是将用户信息保存到数据库内, ApiBoot Security 定义了一个默认表结构的 用户信息数据表 ,我们可以从官网找到 建表语句 直接在自己的数据库内创建即可,当然如果不使用默认的表结构可以进行自定义读取用户信息。 注意:在数据库内存放用户的 密码 必须是通过

你需要具备这些条件才能更好的学习Spring Security 和Apache Shiro

ⅰ亾dé卋堺 提交于 2019-11-30 18:59:18
前言 web应用达到生产需要就必须有安全控制。java web领域经常提及的两大开源框架主要有两种选择 Spring Security和Apache Shiro 。所以学习这两种框架也是java开发者提高水平的必经之路。从今天开始连续一段时间内,研究一下Spring Security。如果想学习的同学可以关注一下公众号: Felordcn 或者通过 https://felord.cn 来及时获取相关的干货。 Spring Security 和Apache Shiro 相对于Apache Shiro,Spring Security提供了更多的诸如 LDAP 、 OAuth2.0 、 ACL 、 Kerberos 、 SAML 、 SSO 、 OpenID 等诸多的安全认证、鉴权协议,可以按需引用。对认证/鉴权更加灵活,粒度更细。可以结合你自己的业务场景进行更加合理的定制化开发。在最新的Spring Security 5.x中更是提供了响应式应用(reactive application)提供了安全控制支持。从语言上来讲,支持使用kotlin、groovy进行开发。 Spring Security因为是利用了Spring IOC 和AOP的特性而无法脱离Spring独立存在。而Apache Shiro可以独立存在。但是Java Web领域Spring可以说是事实上的J2EE规范

springboot大量案例编写,快速搭建公司开发环境,助你一臂之力

天大地大妈咪最大 提交于 2019-11-30 18:09:32
大概涉及到的案例有 第一次搭建springboot2入门 第一次搭建springboot2入门 springboot2如何配置 如何结合mybatis 如何结合jdbcTemplate 如何多个mybatis数据源 如何jdbcTemplate多数据源 如何设置springboot2的aop 如何结合Thymeleaf前台框架 如何结合redis 如何配置ehcache 如何使用shiro开发认证 如何使用shiro记住登录 如何使用shiro权限获取 如何在shiro里面使用redis 如何在shiro里面使用ehcache 如何在shiro中管理session springboot如何使用jackson springboot如何测试 springboot如何使用swagger2 springboot和邮件结合 springboot过滤器的使用 springboot中mybatis分页使用 springboot和spring-security结合 springboot和spring-security如何验证 springboot和spring-security如何授权 springboot和spring-security结合短信发送验证码 springboot跨域 springboot异步请求 springboot和dubbo整合 spingboot和WebFlux整合

SpringBoot集成Spring Security入门体验

非 Y 不嫁゛ 提交于 2019-11-30 18:06:06
一、前言 Spring Security 和 Apache Shiro 都是安全框架,为Java应用程序提供身份认证和授权。 二者区别 Spring Security: 重 量级安全框架 Apache Shiro: 轻 量级安全框架 关于shiro的权限认证与授权可参考小编的另外一篇文章 : SpringBoot集成Shiro 实现动态加载权限 https://blog.csdn.net/qq_38225558/article/details/101616759 二、SpringBoot集成Spring Security入门体验 基本环境 : springboot 2.1.8 1、引入Spring Security依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> 2、新建一个controller测试访问 @RestController public class IndexController { @GetMapping("/index") public String index() { return "Hello World ~"; } } 3、运行项目访问 http://127

Spring security (一)架构框架-Component、Service、Filter分析

可紊 提交于 2019-11-30 17:56:40
  想要深入spring security的authentication (身份验证)和access-control(访问权限控制)工作流程,必须清楚spring security的主要技术点包括关键接口、类以及抽象类如何协同工作进行authentication 和access-control的实现。 1.spring security 认证和授权流程 常见认证和授权流程可以分成: A user is prompted to log in with a username and password (用户用账密码登录) The system (successfully) verifies that the password is correct for the username(校验密码正确性) The context information for that user is obtained (their list of roles and so on).(获取用户信息context,如权限) A security context is established for the user(为用户创建security context) The user proceeds, potentially to perform some operation which is

Spring Security 解析(七) —— Spring Security Oauth2 源码解析

独自空忆成欢 提交于 2019-11-30 12:21:47
Spring Security 解析(七) —— Spring Security Oauth2 源码解析 >   在学习Spring Cloud 时,遇到了授权服务oauth 相关内容时,总是一知半解,因此决定先把Spring Security 、Spring Security Oauth2 等权限、认证相关的内容、原理及设计学习并整理一遍。本系列文章就是在学习的过程中加强印象和理解所撰写的,如有侵权请告知。 > 项目环境: > - JDK1.8 > - Spring boot 2.x > - Spring Security 5.x   在解析Spring Security Oauth2 源码前,我们先看下 Spring Security Oauth2 官方文档 ,其中有这么一段描述: > The provider role in OAuth 2.0 is actually split between Authorization Service and Resource Service, and while these sometimes reside in the same application, with Spring Security OAuth you have the option to split them across two applications, and

Spring Security之简单举例

余生长醉 提交于 2019-11-30 08:43:45
核心功能 Spring Security提供了三个核心的功能: 认证(你是谁) 授权(你能干什么) 攻击防护(防止伪造身份) 一个简单例子 默认情况 在前面的开发中,都是将spring security功能禁用的,现在开启该功能,即在application.properties文件中把下面这句话注释掉即可。 # security.basic.enabled=false # 注:在添加了BrowserSecurityConfig之后,security.basic.enabled这个配置就不管用了 重启应用会在控制台输出一个默认密码,对应的用户名是user 再访问 http://localhost:8080/user/1时会提示输入用户名密码,默认情况下是httpBasic认证 . 自定义认证模式 认证授权相关的代码写在各个模块里,处理浏览器相关的代码写在imooc-security-browser模块里。写在imooc-security-browser模块里的配置能在demo模块里起作用,原因是demo中的起动类在com.imooc包下,而BrowserSecurityConfig在com.imooc.security.browser.config包下,注意启动类和配置类所在的包,要不然配置类会不起作用的 httpBasic登录,在imooc-security