Spring Security

2020 年 Java 程序员应该学习什么?

若如初见. 提交于 2020-03-21 02:03:13
3 月,跳不动了?>>> 大家好,我相信大家在新的一年都有一个良好的开端,并准备好制定一个提升自我技术的目标。作为 Java 开发人员,我还制定了一些目标,希望在今年成为一名更好的 Java 开发人员。 如果你尚未制定目标,这将帮助你制定 2020 年的目标。作为一名程序员,我们面临的最大挑战是使自己保持不断学习的状态。技术变化非常快,每两年你就会看到新版本的编程语言和框架。 今年也有很多的变化,每 6 个月更新一次 Java 新版本、Spring 5、Spring Security 5 和 Spring Boot 2,对于 Java 开发人员而言,这可能是最繁忙的一年。 2019 年的时候,我以为 Java 11 是新的,在我无法完全学习 Java 11 之前,Java 12 和 Java 13 已经为我们准备好了。自 JDK 9 以来,所有这些 Java 版本都具有许多令人兴奋的功能,例如文本块(多行字符串),switch 表达式,局部变量的 var,API 增强,GC 改进,线程本地握手(机制优化)等,我真的很高兴能在 2020 年学到这些内容。 Spring framework 和 Spring Security 也是如此的,我还不知道 Spring 4.0 和 Spring Security 4.0 上的所有更改,我的项目仍在使用 Spring Security 3.1

爱了爱了!推荐一个Github 70k+点赞的Java学习指南!

你。 提交于 2020-03-20 13:38:42
3 月,跳不动了?>>> 大家好,我是 Guide 哥!今天给大家推荐一个非常不错的 Java 教程类开源项目— JavaGuide ,Github 地址: https://github.com/Snailclimb/JavaGuide ,相信对于你学习 Java 以及准备 Java 方向的面试都很有帮助!正如作者说的那样,这是一份: 涵盖大部分 Java 程序员所需要掌握的核心知识的 Java 学习+面试指南! 从上图就可以看到这个项目截止到 2020-3-20 日已经有了 72.2 k 的 Star,看来受众面还是比较广的。这个项目目前有 **2100+**次的 commit 记录,共计 320 +个 issue 以及 330 +个 pr。这个数据从一方面可以说明,这个项目维护更新比较快,内容质量也比较高! 下面是这个项目的目录!可以看出作者划分的非常清晰以及详细了,大家完全可以按照下面的目录结构来进行学习!非常赞!给作者点个赞! 另外,最让人开心的是这个项目还推出了一个专门为 Java/程序员面试而生的 PDF 版本— 《JavaGuide 面试突击版》 。简直不要太棒!我都快要爱上作者了呢! 最后,这个项目实际上是我在大三上学期的时候开源的,这篇文章也算是自己的一个自吹!哈哈!希望 JavaGuide 能对学习 Java 的朋友有帮助! 还有!JavaGuide 的

【Spring Security + OAuth2 + JWT入门到实战】23. 改造基于APP接口社交注册

有些话、适合烂在心里 提交于 2020-03-20 12:24:16
3 月,跳不动了?>>> 简介 上章完成社交登录但是我们是在数据库有用户的情况下登录了,这章解决数据库无该用户数据先完成注册再登录。 流程 看之前浏览器代码如果用户未注册我们会把用户引导到注册页面 注册完成以后访问 /social/user 连接通过 ProviderSignInUtils帮助包到session取用户资料 登录通过以会拿到用户的唯一标识再调用doPostSignUp方法从session拿出用户资料进行绑定再添加到数据库 到这里我们也看到问题那就是整个流程都是基于session完成的,但是我们APP是无session的 改造 改造思路如果第三方信息在数据库查不到数据先保存到Redis等用户注册完我们平台账号拿到userId以后再绑定保存到数据库 创建帮助类AppSingUpUtils: /** * */ package com.spring.security.social; import java.util.concurrent.TimeUnit; import com.spring.security.AppSecretException; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import

集成SpringBootAdmin and Nacos and SpringSecurity

一世执手 提交于 2020-03-18 23:27:16
3 月,跳不动了?>>> 前言 本文约定: SpringBootAdmin - SBA SpringSecurity - SSE 以当前我在搜索引擎检索的情况来看,大家对于SBA的应用都比较局限,发散性使用很少,基本都是基于官网给的例子(eureka-SBA-SSE), 而且网上的各文章,出现了一些很容易让人迷惑的问题,就比如引入依赖的部分SpringCloudAlibaba在引入依赖的时候竟然出现了两种GroupId..., 为此我也被绕晕了,故基于最新的版本以及SpringCloudAlibaba推荐的方式,对SBA-SSE-Nacos进行了一下集成,并写了这篇文章,希望后面看到的人避免再淌这个坑 Ps.不得不说微服务各界的版本是真的很混乱。 开始 安装Nacos 具体安装教程,可以参考官网,这里不再赘述,安装很简单。 版本:1.4+(其实1.1以上应该都可以) 创建项目 一个maven项目即可,按一般的教程会创建两个项目,一个作为Admin Server,一个作为Admin Client, 这里为了减少大家的学习成本,本示例会直接将本项目在作为AdminServer的同时,同时配置以客户端的身份注册到AdminServer. 引入依赖 <properties> <java.version>1.8</java.version> <spring-boot-admin

【Spring Security + OAuth2 + JWT入门到实战】20. 改造密码登录返回标准oauth2报文

﹥>﹥吖頭↗ 提交于 2020-03-18 22:46:13
3 月,跳不动了?>>> 简介 改造之前密码登录返回标准的OAuth2登录成功报文 流程 参考这个流程,来实现在登录成功处理器 HkAuthenticationSuccessHandler 里生成令牌并返回: 这个是从之前browser项目拷贝过来的成功处理器,我们在这个基础安装上面的流程图去改 package com.spring.security.authentication; import com.fasterxml.jackson.databind.ObjectMapper; import com.spring.security.properties.LoginType; import com.spring.security.properties.SecurityProperties; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.core.Authentication; import org.springframework.security.web.DefaultRedirectStrategy; import org.springframework.security.web.RedirectStrategy;

【Spring Security + OAuth2 + JWT入门到实战】17. oauth2授权码模式

痴心易碎 提交于 2020-03-17 13:40:10
某厂面试归来,发现自己落伍了!>>> 简介 https://gitee.com/hekang_admin/spring-security 做oauth2之前项目架构给调整了一下,spring-boot更新到最新版本,真是一代版本一代神两天遇到很多问题这里一一解决。 <spring-boot.version>2.2.4.RELEASE</spring-boot.version> <spring-cloud.version>Hoxton.SR2</spring-cloud.version> <security.oauth.version>2.3.6.RELEASE</security.oauth.version> 授权码模式 授权码模式是最能体现OAuth2协议,最严格,流程最完整的授权模式,流程如下所示: A. 客户端将用户导向认证服务器; B. 用户决定是否给客户端授权; C. 同意授权后,认证服务器将用户导向客户端提供的URL,并附上授权码; D. 客户端通过重定向URL和授权码到认证服务器换取令牌; E. 校验无误后发放令牌。 其中A步骤,客户端申请认证的URI,包含以下参数: response_type:表示授权类型,必选项,此处的值固定为”code”,标识授权码模式 client_id:表示客户端的ID,必选项 redirect_uri:表示重定向URI,可选项 scope

【Spring Security + OAuth2 + JWT入门到实战】16. 第三方登录绑定和解绑

蹲街弑〆低调 提交于 2020-03-14 10:15:45
简介 用户登录以后读取用户第三方登录是否绑定,已绑定显示解绑按钮,未绑定显示去绑定按钮 读取用户第三方登录详细源码分析 SpringSocial已经未我们提供了方法ConnectController来读取以后第三方登录信息 在SocialConfig类把ConnectController添加到bean // 这个是提供查询社交账户信息服务,绑定服务,等 @Bean public ConnectController connectController( ConnectionFactoryLocator connectionFactoryLocator, ConnectionRepository connectionRepository) { return new ConnectController(connectionFactoryLocator, connectionRepository); } ConnectController org.springframework.social.connect.web.ConnectController public String connectionStatus(NativeWebRequest request, Model model) { this.setNoCache(request); this.processFlash

硬核干货!2020最新Java最常见面试题汇总。Guide哥倾心整理!

老子叫甜甜 提交于 2020-03-11 12:56:42
内容来自 Guide 哥的读者朋友大厂的真实面试经历,Guide哥整理!希望通过这些问题,能够让大家学习更有方向,而不是单纯把这些问题都背会了! 另外,内容会继续完善,欢迎你在评论区说出你遇到的高频面试题!更多内容: 《喜大普奔!70k Star Java开源项目出PDF阅读版本啦!》 Java Java 基础这部分一些简单的问题就直接没有放上来。 基础: Java 反射?反射有什么缺点?你是怎么理解反射的(为什么框架需要反射)? 谈谈对 Java 注解的理解,解决了什么问题? 内部类了解吗?匿名内部类了解吗? BIO和NIO区别,4核cpu,100个http连接,用BIO和NIO分别需要多少个线程 HashMap的负载因子。 jvm: jvm 内存结构 jvm 调优参数 什么是类加载? 何时类加载? java的类加载流程? 知道哪些类加载器。类加载器之间的关系? 类加载器之间的关系? 类加载器的双亲委派 (结合tomcat说一下双亲委派) 为什么需要双亲委派 Java内存模型 栈中存放什么数据,堆中呢? 大对象放在哪个内存区域 堆区如何分类 垃圾回收有哪些算法 GC的全流程 GC中老年代用什么回收方法? 多线程: Java线程池有哪些参数?阻塞队列有几种?拒绝策略有几种? 死锁 设计模式: 阅读Spring源码的时候什么设计模式最让你影响深刻?如何使用? 单例模式

运行时动态的开关 Spring Security

一个人想着一个人 提交于 2020-03-10 22:18:49
1. 为什么要在运行时动态的开关 Spring Security? 考虑这样一个场景,当我们构建了一整套微服务架构的系统后,公司某个内部的老系统也感受到了微服务架构的好处,包括实时监控,限流,熔断,高可用的机制等等,老系统的开发人员也希望能减少自己的一些工作量,所以他们系统将老系统加入到我们的微服务架构体系中来。这样就产生了一些适配,兼容性问题,如果让老系统来完全适配已经构建好的微服务架构体系那么老系统改动的代价就比较大,包括技术的升级,开发人员的学习成本提高,测试问题,还有老系统还有一些不断的新需求要开发。比较理想的解决方案是对老系统的改动越小越好,最好能做到无缝集成,已经构建好的微服务架构来为老系统的集成提供支持。比如说老系统原本有自己的认证,授权控制,使用了 Spring Security ,在微服务架构中我们将认证,授权的工作统一放在了 API 网关层去处理。这样就和老系统的集成产生了冲突。于是我就需要让 API 网关路由到老系统上的请求不经过老系统自身的认证、授权流程,也可以正常访问。同时也不能破坏当不通过 API 网关访问时老系统的认证、授权流程也要能正常工作。所以这是我要达到的目的。 2. Spring Security 在 Web 项目中是如何工作的 这是我在网上找的一张图,目的就是为了大概说明问题。 Spring Web Security

Spring Security 实战干货:过滤器链的机制和特性

让人想犯罪 __ 提交于 2020-03-10 21:58:46
1. 前言 过滤器作为 Spring Security 的重中之重,我们需要了解其中的机制。这样我们才能根据业务需求的变化进行定制。今天来探讨一下 Spring Security 中的过滤器链机制 2. Spring Security 过滤器链 客户端(APP 和后台管理客户端)向应用程序发送请求,然后应用根据请求的 URI 的路径来确定该请求的过滤器链( Filter )以及最终的具体 Servlet 控制器( Controller )。 从上图我们可以看出 Spring Security 以一个单 Filter(FilterChainProxy) 存在于整个过滤器链中,而这个 FilterChainProxy 实际内部代理着众多的 Spring Security Filter 。这简直就是套娃啊! 2.1 过滤器链的形成过程 再多说一点 Filter 们的初始化过程,首先 Filter 们按照一定的顺序被 SecurityBuilder 的实现来组装为 SecurityFilterChain ,然后通过 WebSecurity 注入到 FilterChainProxy 中去,接着 FilterChainProxy 又在 WebSecurityConfiguration 中以 springSecurityFilterChain 的名称注册为 Spring Bean