Spring Security

SpringBoot、SpringSecurity、Vue整合JWT认证

懵懂的女人 提交于 2020-02-28 09:35:00
原文地址 概述 在开始这篇文章前,博主默认你们已经对Spring Boot、Spring Security、Vue以及JWT已经了解。这里对以上概念也不再赘述。下面先讲一下思路。 1、后端需要编写JWT生成处理和JWT解析认证处理。 2、前端填写用户名和密码发送登录请求。 3、经后端Spring Security登录认证成功后,由JWT生成器生成 Token 返回给前端。 4、前端拿到 Token ,在之后的请求中需要携带这个 Token 。 5、后端编写JWT过滤器,对请求中的 Token 进行解析处理,解析成功通过,失败返回相应提示。 效果展示 hello 按钮不需要登录, 测试1 和 测试2 按钮需要登录才能访问。点击登录后会获取 Token ,下次发送请求携带这个 Token . 源码地址 代码实现 后端实现 引入依赖 <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt</artifactId> <version>0.9.1</version> </dependency> 代码实现 1、在用户成功登录后下发Token Spring Security 在做登录操作的时候允许我们添加我们的自己的 登录成功处理器 和 登录失败处理器 。这里我编写了自己的 成功处理器 和 失败处理器 。在 成功处理器

投票:OAuth2.0 技术选型你会怎么选

[亡魂溺海] 提交于 2020-02-27 15:58:37
1. 前言 在使用 OAuth2.0 中 Authorization Server (授权服务器)是一个回避不了的设施,在大多数情况下我们调用的是一些知名的、可靠的、可信任的第三方平台,比如 QQ、微信、微博、github 等。我们的应用只作为 Client 进行注册接入即可。也就是说我们只需要实现 OAuth2.0 客户端的逻辑就可以了,无须关心授权服务器的实现。然而有时候我们依然希望构建自己的 Authorization Server 。我们应该如何实现?今天不会讨论具体的技术细节,来谈谈 OAuth2.0 的技术选型。 2. Spring Security OAuth2 现状 在做 Spring Security 相关教程 的时候首先会考虑 Spring 提供的 OAuth2.0 功能。当我去 Spring 官网了解相关的类库时发现居然 Spring 的 OAuth2.0 类库即将过期的通知,有图有真相: 总结以下就是 Spring Security OAuth 的模块即将过期,后续的功能已经迁移到 Spring Security 5.2.x 中,但是不会再提供 Authorization Server 的功能。 在官方声明中还提到, 当前 Spring Security OAuth 分支是 2.3.x 和 2.4.x 。 2.3.x 版本将于 2020 年 3 月寿命终止

SpringBoot 整合 SpringSecurity 之基于内存认证(一)

时间秒杀一切 提交于 2020-02-27 13:53:30
SpringBoot 整合 SpringSecurity 之基于内存认证(一) 在第一篇的教程中,我们简单的了解了一下 SpringSecurity 的使用姿势,添加依赖,在 application.yml 文件中加几行配置,就可以实现一个基本的登录认证; 默认的配置只能设置一个账号,那么如果需要多个账号可以怎么支持呢? 本文将介绍一下基于内存的认证方式 <!-- more --> I. 内存认证 基于内存保存认证信息的方式,本篇博文中,会介绍两种常见的使用姿势 0. 项目配置 环境配置和前面一致,相关内容可以参考博文: 191223-SpringBoot 整合 SpringSecurity 之起源篇(零) 1. WebSecurityConfigurerAdapter 这里主要是借助 SpringSecurity 的配置适配器来处理,下面是一个简单的 case @Configuration public class SecurityAdapterConfig extends WebSecurityConfigurerAdapter { @Bean public PasswordEncoder passwordEncoder() { return new BCryptPasswordEncoder(); } @Override protected void configure

SpringSecurity 默认表单登录页展示流程源码

♀尐吖头ヾ 提交于 2020-02-27 08:51:08
SpringSecurity 默认表单登录页展示流程源码 本篇主要讲解 SpringSecurity提供的默认表单登录页 它是如何展示的的流程, 涉及 1.FilterSecurityInterceptor, 2.ExceptionTranslationFilter , 3.DefaultLoginPageGeneratingFilter 过滤器, 并且简单介绍了 AccessDecisionManager 投票机制  1.准备工作(体验SpringSecurity默认表单认证)   1.1 创建SpringSecurity项目   先通过IDEA 创建一个SpringBoot项目 并且依赖SpringSecurity,Web依赖   此时pom.xml会自动添加 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency>   1.2 提供一个接口 @RestController public class HelloController { @RequestMapping("/hello") public String hello() { return "Hello SpringSecurity

如何设计一个高可用系统?要考虑哪些地方?

拜拜、爱过 提交于 2020-02-27 04:54:17
本文已经收录自笔者开源的 JavaGuide: https://github.com/Snailclimb (69k+Star【Java学习+面试指南】 一份涵盖大部分Java程序员所需要掌握的核心知识)如果觉得不错的还,不妨去点个Star,鼓励一下! 一篇短小的文章,面试经常遇到的这个问题。本文主要包括下面这些内容: 高可用的定义 哪些情况可能会导致系统不可用? 有些提高系统可用性的方法?只是简单的提一嘴,更具体内容在后续的文章中介绍,就拿限流来说,你需要搞懂:何为限流?如何限流?为什么要限流?如何做呢?说一下原理?。 什么是高可用?可用性的判断标准是啥? 高可用描述的是一个系统在大部分时间都是可用的,可以为我们提供服务的。高可用代表系统即使在发生硬件故障或者系统升级的时候,服务仍然是可用的。 一般情况下,我们使用多少个 9 来评判一个系统的可用性,比如 99.9999% 就是代表该系统在所有的运行时间中只有 0.0001% 的时间都是可用的,这样的系统就是非常非常高可用的了!当然,也会有系统如果可用性不太好的话,可能连 9 都上不了。 哪些情况会导致系统不可用? 黑客攻击; 硬件故障,比如服务器坏掉。 并发量/用户请求量激增导致整个服务宕掉或者部分服务不可用。 代码中的坏味道导致内存泄漏或者其他问题导致程序挂掉。 网站架构某个重要的角色比如 Nginx 或者数据库突然不可用。

SpringSecurity 自定义登陆方式验证user身份发布jwt令牌

巧了我就是萌 提交于 2020-02-27 03:29:19
这里我们已账户密码登录为例 public ResponseEntity<MsgInfo<UserVM>> authenticate(@Valid @RequestBody LoginVM loginVM) { Map<String, String> objects = new HashMap<>(); objects.put("password", loginVM.getPassword()); final UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(loginVM.getUsername(), objects); final Authentication authentication = this.authenticationManager.authenticate(authenticationToken); SecurityContextHolder.getContext().setAuthentication(authentication); final boolean rememberMe = (loginVM.getRememberMe() == null) ? false : loginVM.getRememberMe(

基于Java 256位AES密码的加密

空扰寡人 提交于 2020-02-27 03:24:40
我需要实现256位AES加密,但是我在网上找到的所有示例都使用“ KeyGenerator”生成256位密钥,但是我想使用自己的密码。 如何创建自己的密钥? 我尝试将其填充到256位,但是随后出现错误消息,提示密钥太长。 我确实安装了无限管辖权补丁,所以那不是问题:) 就是 KeyGenerator看起来像这样... // Get the KeyGenerator KeyGenerator kgen = KeyGenerator.getInstance("AES"); kgen.init(128); // 192 and 256 bits may not be available // Generate the secret key specs. SecretKey skey = kgen.generateKey(); byte[] raw = skey.getEncoded(); 从这里获取的代码 编辑 我实际上是将密码填充到256个字节而不是位,这太长了。 以下是我现在正在使用的一些代码,因为我对此有更多的经验。 byte[] key = null; // TODO byte[] input = null; // TODO byte[] output = null; SecretKeySpec keySpec = null; keySpec = new

入门实战: Spring Security

我的未来我决定 提交于 2020-02-27 02:37:36
认证授权 OAuth 2.0 Authorization Server 新建项目 Artifact: auth-server Dependencies: <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-oauth2-resource-server</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>

离三月还有十天时间,如何在金三银四逆袭?避免被企业优化?

て烟熏妆下的殇ゞ 提交于 2020-02-26 07:03:02
众所周知每年的三月四月都是程序员跳槽的高峰季节,虽然如今因为疫情而搁置,但是疫情稳定之后,面试季势必如火如荼,如果你也正在筹备面试,应该做些什么准备呢? 首先你需要了解你自己的基础知识储备是否足够 面对面试官的基础提问,你是否可以应对自如 面对面试官在技术深度的灵魂发问,你是否可以给到他一个满意的回答 如果不能,那么请接着和我看下来 2020你面对面试必需会的十大技术: 1、DevOps (Docker and Jenkins) 2、Java 9 - Java 15 3、Spring Framework 5 4、Spring Security 5.0 5、Spring Boot 2 6、Hadoop、Spark 和 Kafka 7、Elasticsearch 8、ServiceMesh 9、Serverless 10、Kotlin 程序员最忌讳的就是固步自封,你不紧跟市场,市场就会淘汰你,在一成不变的技术面前,再多的开发经验也是空谈 技术深度 1. 有没有看过JDK源码,看过的类实现原理是什么。 2. HTTP协议 3. TCP协议 4. 一致性Hash算法 5. JVM如何加载字节码文件 6. 类加载器如何卸载字节码 7. IO和NIO的区别,NIO优点 8. Java线程池的实现原理,keepAliveTime等参数的作用。 9. HTTP连接池实现原理 10.

面试时这么问你Spring Boot,你能答对几个?

空扰寡人 提交于 2020-02-25 18:27:51
导语: Spring Boot 是 Spring 开源组织下的子项目,是 Spring 组件一站式解决方案,主要是简化了使用 Spring 的难度,简省了繁重的配置,提供了各种启动器,开发者能快速上手。 做 Java 开发,没有人敢小觑 Spring Boot 的重要性,现在出去面试,无论多小的公司 or 项目,都要跟你扯一扯 Spring Boot,扯一扯微服务,不会?没用过? Sorry ,我们不合适! 今天我就给大家整理了 16 道高频 Spring Boot 面试题,希望能够帮助到各位准备寻找新的工作机会的小伙伴。觉得有收获的话,可以帮忙转发、收藏一下 1.什么是 Spring Boot ? 传统的 SSM/SSH 框架组合配置繁琐臃肿,不同项目有很多重复、模板化的配置,严重降低了 Java 工程师的开发效率,而 Spring Boot 可以轻松创建基于 Spring 的、可以独立运行的、生产级的应用程序。通过对 Spring 家族和一些第三方库提供一系列自动化配置的 Starter,来使得开发快速搭建一个基于 Spring 的应用程序。 Spring Boot 让日益臃肿的 Java 代码又重回简洁。在配合 Spring Cloud 使用时,还可以发挥更大的威力。 2.Spring Boot的优点有哪些? Spring Boot的优点如下? 减少开发,测试时间和努力。