Spring Security

Spring Security 退出

杀马特。学长 韩版系。学妹 提交于 2020-03-10 00:12:31
Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了Spring IoC,DI(控制反转Inversion of Control ,DI:Dependency Injection 依赖注入)和AOP(面向切面编程)功能,为应用系统提供声明式的安全访问控制功能,减少了为企业系统安全控制编写大量重复代码的工作。 退出原理 清除 Cookie (如果有 - CookieClearingLogoutHandler ) 清除当前用户的 remember-me 记录(如果有 - TokenBasedRememberMeServices ) Clears the CsrfToken (如有有csrf - CsrfLogoutHandler ) 使当前 session 失效 ( SecurityContextLogoutHandler ) 清空当前的 SecurityContext ( SecurityContextLogoutHandler ) 重定向到登录界面 (logoutSuccessHandler - SimpleUrlLogoutSuccessHandler ) Spring Security 的退出请求(默认为 /logout )由

【Spring Security + OAuth2 + JWT入门到实战】15. 第三方QQ登录以后用户注册

让人想犯罪 __ 提交于 2020-03-09 16:37:20
简介 上一篇文章完成QQ登录,一般操作如果当前QQ登录用户在我们数据库没有注册那应该跳注册绑定页面,如果我们未配置跳转的页面默认会跳转到:/signup 源码分析 进入SocialAuthenticationFilter中 private Authentication doAuthentication(SocialAuthenticationService<?> authService, HttpServletRequest request, SocialAuthenticationToken token) { try { if (!authService.getConnectionCardinality().isAuthenticatePossible()) { return null; } else { token.setDetails(this.authenticationDetailsSource.buildDetails(request)); Authentication success = this.getAuthenticationManager().authenticate(token); Assert.isInstanceOf(SocialUserDetails.class, success.getPrincipal(), "unexpected

【Spring Security + OAuth2 + JWT入门到实战】13. QQ登录加源码分析

别说谁变了你拦得住时间么 提交于 2020-03-08 19:20:01
源码分析 因为spring security social是基于SocialAuthenticationFilter实现的,所以咱们从SocialAuthenticationFilter入手开始分析 一说到Filter,必定有一个对应的配置类 SocialAuthenticationFilter也不例外,它对应的配置类就是 SpringSocialConfigurer ,为了让项目运行起来,咱们先把配置准备好: SocialConfig core项目com.spring.security.social路径 package com.spring.security.social; import com.spring.security.properties.SecurityProperties; import com.spring.security.social.qq.connet.QQConnectionFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import

SpringSecurity 学习总结

馋奶兔 提交于 2020-03-08 12:02:08
一些基础的知识可以参考以下连接: https://www.cnkirito.moe/spring-security-1/ 讲真,这老哥写的很好,不过还有很多估计没写完,遗憾 本文章主要是一个大概的总结。 首先SpringSecurity是一个安全框架,它所做的事儿简单概括就是使用Filter对整个项目进行一个保护, 保护的内容就包括 认证 和 授权验证 如果单针对Filter的话 他包括 登陆认证,和对URL的权限验证, 登陆认证是在SpringSecurity的过滤器链中的AbstractAuthenticationProcessingFilter的子类来做的 具体步骤 请求进来->若干前置过滤器->AbstractAuthenticationProcessingFilter.doFilter()-> AbstractAuthenticationProcessingFilter.attemptAuthentication()->如果获取到了Authentication则继续往下执行,否则重定向到登陆页面.... 从attemptAuthentication方法中的认证操作是调用了AuthenticationManager的authenticate方法来进行登陆认证,然后会把用户提交的用户信息封装成AuthenticationToken的实例丢进去,在其中进行验证

【Spring Security + OAuth2 + JWT入门到实战】12. OAuth协议简介

南楼画角 提交于 2020-03-06 12:12:15
OAuth协议中的各个角色 服务提供商 Provider 资源所有者 Resource Owner 第三方应用 Client 认证服务器 Authorization Server 派发令牌 资源服务器 Resource Server 验证令牌,并提供服务 OAuth提供了4中授权方式 授权码模式 Authorization code 简化模式 implicit 密码模式 resource owner Password credentials 客户端模式 client credentials 授权码模式 Authorization code 该模式与其他三种模式不同,最重要的区别就是:同意授权这个动作,是在认证服务器上完成的,而其他的三种都是在第三方应用上完成的。 该模式是4中模式中最严格最完整的一种协议 简化模式 implicit 在授权后直接带回令牌,安全性比较低适用于没有认证服务器的网站。 来源: oschina 链接: https://my.oschina.net/u/1046143/blog/3188965

spring boot 集成 spring security 实现json串登录和短信验证码登录(1)

Deadly 提交于 2020-03-04 15:44:09
security 实现json 登录。 问题:用spring security 实现json串登录方式一般用来解决前后端分离的登录问题的处理,前端通过输入用户名密码json串发送后端由security验证登录,登录成功返回登录成功标识token。以后请求只需带token即可通过验证。这其中涉及到几个问题: 1.如何让spring security 校验我们自定义的json串登录过滤器 2.登录成功后,后续请求如何让spring security 验证token来实现自动认证 那么,解决这两个问题,首先得看spring security登录的实现方式,spring security实现登录是通过一系列过滤器链来最终来完成登录,所以我们需要自定义一个json登录和校验过滤器加入到security的过滤器链。而且我们通过spring security 的UsernamePasswordAuthenticationFilter.class源码 public Authentication attemptAuthentication(HttpServletRequest request , HttpServletResponse response) throws AuthenticationException { if ( this .postOnly && !request

【Spring Security + OAuth2 + JWT入门到实战】10. 改造优化获取图形验证码和短信验证码

|▌冷眼眸甩不掉的悲伤 提交于 2020-03-04 13:06:23
简介 在获取图形验证码和短信验证码有很多重复的代码本次会优化这些代码。 项目文件结构 验证码处理器代码结构 虚线是调用 ValidateCodeController # 服务入口 ValidateCodeProcessor # 验证码处理接口 AbstractValidateCodeProcessor # 验证码处理 公共功能,使用模版方法模式聚合公共逻辑 ImageCodeProcessor # 图片验证码处理:响应 SmsCodeProcessor # 短信验证码处理:发送 ValidateCodeGenerator # 生成接口 ImageCodeGenerate # 图形验证码生成 SmsCodeGenerator # 短信验证码生成 ValidateCodeProcessor com.spring.security.validate.code路径创建ValidateCodeProcessor类,生成验证码入口 package com.spring.security.validate.code; import org.springframework.web.context.request.ServletWebRequest; /** * 校验码处理器,封装不同校验码的处理逻辑 * */ public interface ValidateCodeProcessor { /**

【Spring Security + OAuth2 + JWT入门到实战】9. 短信验证码之发送验证码

眉间皱痕 提交于 2020-03-03 18:17:56
简介 Security默认是不支持手机短信验证码登录因此整个认证流程需要我们自己开发,这里我们分多篇文章讲解这篇文章只完成发送手机验证码 短信验证码实体类 spring-security-core项目com.spring.security.validate.code路径SmsCode类 import lombok.Data; import java.awt.image.BufferedImage; import java.time.LocalDateTime; /** * 手机验证码 * */ @Data public class SmsCode { private String code; private LocalDateTime expireTime; public SmsCode(String code, int expireIn) { this.code = code; this.expireTime = LocalDateTime.now().plusSeconds(expireIn); } public boolean isExpire() { return LocalDateTime.now().isAfter(expireTime); } } 发现图形验证码的实体类字段是包含手机验证码的实体类字段,改造图形验证码的实体类继承手机验证码的实体类 修改

基于Spring Security和 JWT的权限系统设计

混江龙づ霸主 提交于 2020-02-29 12:33:28
写在前面 关于 Spring Security Web系统的认证和权限模块也算是一个系统的基础设施了,几乎任何的互联网服务都会涉及到这方面的要求。在Java EE领域,成熟的安全框架解决方案一般有 Apache Shiro、Spring Security等两种技术选型。Apache Shiro简单易用也算是一大优势,但其功能还是远不如 Spring Security强大。Spring Security可以为 Spring 应用提供声明式的安全访问控制,起通过提供一系列可以在 Spring应用上下文中可配置的Bean,并利用 Spring IoC和 AOP等功能特性来为应用系统提供声明式的安全访问控制功能,减少了诸多重复工作。 关于JWT JSON Web Token (JWT),是在网络应用间传递信息的一种基于 JSON的开放标准((RFC 7519),用于作为JSON对象在不同系统之间进行安全地信息传输。主要使用场景一般是用来在 身份提供者和服务提供者间传递被认证的用户身份信息。关于JWT的科普,可以看看阮一峰老师的《JSON Web Token 入门教程》。 本文则结合 Spring Security和 JWT两大利器来打造一个简易的权限系统。 本文实验环境如下: Spring Boot版本: 2.0.6.RELEASE IDE: IntelliJ IDEA 2018.2.4

SpringSecurity 自定义表单登录

穿精又带淫゛_ 提交于 2020-02-28 09:36:13
SpringSecurity 自定义表单登录 本篇主要讲解 在SpringSecurity中 如何 自定义表单登录 , SpringSecurity默认提供了一个表单登录,但是实际项目里肯定无法使用的,本篇就主要讲解如何自定义表单登录  1.创建SpringSecurity项目   1.1 使用IDEA   先通过IDEA 创建一个SpringBoot项目 并且依赖SpringSecurity,Web依赖   此时pom.xml会自动添加 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency>  2.扩展 WebSecurityConfigurerAdapter  WebSecurityConfigurerAdapter 是SpringSecurity 提供的用于我们扩展自己的配置  实现WebSecurityConfigurerAdapter经常需要重写的: 1、configure(AuthenticationManagerBuilder auth); 2、configure(WebSecurity web); 3、configure(HttpSecurity http);   2.1