![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Spring Security
文章平均质量分 95
雨~旋律
持续学习
展开
-
SpringSecurity(二十四)--OAuth2:使用JWT和加密签名(下)非对称密钥加密
由于上文对称密钥涉及到的内容比较多,所以这一节的非对称密钥加密拆开成这一节单独讲解。所以大家尽量先阅读完上一章的内容后再浏览这一章内容会更好。本节将实现OAuth2身份验证的一个示例,其中授权服务器和资源服务器会使用一个非对称密钥对来对令牌签名和验证令牌。有时只让授权服务器和资源服务器共享一个密钥的做法是不可行的。通常,如果授权服务器和资源服务器不是由同一组织开发的,就会发生这种情况。在这种情况下,就可以认为授权服务器不“信任:资源服务器,因此我们不希望授权服务器与资源服务器共享密钥。而且,使用对称密钥,原创 2022-12-30 15:01:58 · 2129 阅读 · 5 评论 -
SpringSecurity(二十三)--OAuth2:使用JWT和加密签名(上)对称密钥加密
最近阳了所以一直都在休整,大家一定要注意身体,能不阳就不阳,如果阳康后还是一直咳嗽,最好是能去医院看看,这绝对不是专家口中所说的新冠感冒那么简单,也绝对不是什么80%的无症状,大家不要放松警惕,仅以我个人观点发声,身体才是最重要的。好了,接下来步入正题,终于,我们也迎来了Spring Security的尾声,学习完jwtTokenStore之后,Spring Security的主要内容学习就告一段落,之后我可能还会更新一些这方面的拓展,例如全局方法安全性,但这些都是后话了。原创 2022-12-29 12:08:19 · 1658 阅读 · 0 评论 -
SpringSecurity(二十二)--OAuth2:实现资源服务器(下)通过redis和缓存实现TokenStore
本章将在前面几章基础上进行讲解,所以大家最好尽量先去看一下前几章的内容再来跟进会好很多。那么本章我们将通过redis和本地缓存Caffeine对JdbcTokenStore进行重写,并且讲解资源服务器配置的新方案,使得我们可以不用在资源服务器又配置一个和授权服务器一样的tokenStore.我们上一章实现了JdbcTokenStore,那么大家都知道,redis的速度是肯定的比普通的数据库是要快的,且JdbcTokenStore实在是有点难拓展,尤其涉及到表结构的更改,所以选择使用Redis对TokenS原创 2022-12-02 18:17:14 · 2987 阅读 · 2 评论 -
SpringSecurity(二十一)--OAuth2:实现资源服务器(中)实现带有JdbcTokenStore的黑板模式
本章将实现授权服务器和资源服务器使用共享数据库的应用程序。这一架构方式被称为。这一架构方式被称为黑板模式。为什么叫黑板模式呢?因为可以将其视为使用黑板管理令牌的授权服务器和资源服务器。。但是,这意味着,而这可能会成为瓶颈。与任何架构一样,实际上它适用于各种情况。例如,如果各服务已经共享了一个数据库,那么对访问令牌也使用这种方法可能也是合理的。出于这个原因,了解如何实现这个方法对你来说可能是很重要的。并且学习该章的前提需要把前面的授权,资源服务器的搭建先给整完,否则会很懵,不知道这块儿代码哪来的这种情况。原创 2022-12-02 15:27:26 · 1335 阅读 · 0 评论 -
SpringSecurity(二十)---OAuth2:实现资源服务器(上)资源服务器搭建以及直接调用授权服务器模式
本章将讨论如何使用Spring Security实现一个资源服务器,资源服务器是管理用户资源的组件。另外,学习本章有个前提,需要先把前面搭建授权服务器的相关文章先给阅读,否则可能后面出现的授权服务器相关代码不知道个所以然。就OAuth2而言,它代表了我们要保护的后端(端点),就像前几章保护的其他应用程序是一样的。为了允许客户端访问资源,资源服务器需要一个有效的访问令牌。客户端会从授权服务器获得访问令牌,并通过将该令牌添加到HTTP请求头信息来使用该令牌调用资源服务器上的资源。原创 2022-12-01 17:18:10 · 3265 阅读 · 0 评论 -
Spring Security(十九)--OAuth2:实现授权服务器(下)--环境准备以及骨架代码搭建
本章我们将在上一章代码骨架搭建好的前提下对三种授权类型进行测试以及讲解如何配置授权服务器以颁发刷新令牌,所以本章是一个比较轻松的章节,但是唯一的要求就是需要小伙伴们对上一章内容要完成代码的搭建,否则这章学习也不知道个所以然。原创 2022-11-28 18:12:31 · 943 阅读 · 0 评论 -
Spring Security(十八)--OAuth2:实现授权服务器(上)--环境准备以及骨架代码搭建
本节大家如果一直从一开始看过来的话,就会巧妙发现我们将之前的实践代码全部连接起来,本节将会使用到之前的短信/验证码登录相关的逻辑代码,如果大家没有看的感兴趣可以回到https://editor.csdn.net/md/?articleId=127617691先将这部分逻辑代码看一看,尝试自己完成。然后本节仍然以实践为主,大家要完全吸收前几节关于OAuth2内容再来学习本节会更好点,然后当时再讲解搭建单点应用程序时,我们讲到过ClientRegistrationRepository这个类,讲到可以通过数据库去原创 2022-11-28 15:35:45 · 1297 阅读 · 3 评论 -
SpringSecurity(十七)---OAuth2的运行机制(下)-实现一个简单的单点登录应用程序
与UserDetailsService对象通过其用户名查找UserDetails相同,原创 2022-11-24 15:09:37 · 1109 阅读 · 2 评论 -
SpringSecurity(十六)---OAuth2的运行机制(中)-密码、客户端凭据授权类型以及刷新令牌
本篇将讨论剩余的授权类型以及使用刷新令牌重新获得令牌等内容,仍然以概念为主。下一节我们将通过一个SSO实例让大家对授权码授权类型更加熟悉。原创 2022-11-23 16:49:52 · 944 阅读 · 0 评论 -
SpringSecurity(十五)---OAuth2的运行机制(上)-OAuth2概念和授权码模式讲解
这里将介绍如何实现OAuth2与SpringBoot和Spring Security的集成应用。原创 2022-11-23 11:45:21 · 1414 阅读 · 0 评论 -
SpringSecurity(十四)---实现过滤器(下)整合短信认证
学习完Spring Security中的过滤器后,我们就可以整合新的认证方式并且让Spring Security帮我们完成认证的整个过程,那么这一章我们将通过加入短信验证码认证的例子带大家巩固之前的学习。当然由于本人并没有开通短信业务,所以这里通过生成4位随机数并配合redis完成相关业务,大家如果集成了想尝试完全可以平替,主要学习的是原理和流程。首先 我们需要了解spring security的基本工作流程之后我们就可以模仿上面的密码登录流程完成短信验证认证方法,流程如下:根据上图 我们要重写 S原创 2022-11-01 14:56:44 · 767 阅读 · 1 评论 -
SpringSecurity(十三)---实现过滤器(上)基础讲解
在Spring Security中,HTTP过滤器会委托应用于HTTP请求的不同职责。在之前学习中我们也经常提到过过滤器,不知道大家是否还记得Spring Security的那个框架图,大家可以发现最顶层就是一个个的过滤器,例如提到过的身份验证过滤器,它将身份验证职责委托给身份验证管理器。又比如授权过滤器会负责授权配置等等。通常HTTP过滤器会管理必须应用于请求的每个职责。过滤器形成了职责链。过滤器会接受请求、执行其逻辑,并最终将请求委托给链中的下一个过滤器。原创 2022-10-31 16:01:41 · 2178 阅读 · 0 评论 -
SpringSecurity(十二)---配置权限:应用限制
之前讲解了如何基于权限和角色配置访问。但是其中只应用了针对所有端点的配置。本章将介绍如何对特定的请求分组应用授权约束。在生产环境的应用程序中,不太可能对所有请求应用相同的规则。其中将具有只有某些特定用户才能调用的端点,而其他端点则可能每个用户都可以访问。根据业务需求,每个接口都有自己的自定义授权配置。要选择应用授权配置的请求,可以使用匹配器方法。Spring Security提供了3种类型的匹配方法。首先看一个简单的示例,我们要创建一个暴露两个端点的应用程序,这两个端点是/hello和/xiao。我们希望原创 2022-10-26 16:37:04 · 1170 阅读 · 0 评论 -
SpringSecurity(十一)--配置权限以及相关限制(下)
本章我们将承接上篇文章的项目为基础学习,所以没有搭建好项目的小伙伴请先去查看上一篇文章把项目理解并且搭建好,当然大家也可以用自己的方式进行搭建学习,不用啥都按部就班,尤其是编程这块儿,具有极大的灵活性,没准你的方法才是最适合的。但是对于后面的代码,我将以上篇搭建好的代码为架构基础进行展示。原创 2022-10-24 15:21:14 · 1640 阅读 · 0 评论 -
SpringSecurity(十)--配置权限以及相关限制(上)----代码搭建
市面上很多教程都说Spring Security是一个解决身份验证、授权管理的安全框架,截至目前,我们只讨论了身份验证,正如之前介绍过的,身份验证是应用程序标识资源的调用者的过程。前面的学习中我们并没有实现任何决定是否批准请求的规则。其中仅关注了系统是否知道该用户,即productConfig中的anyRequest,permitAll/authenticated.在大多数应用程序中,并非系统识别出的所有用户都能访问系统中的每个资源,这就牵扯出授权,授权是系统决定已识别的客户端是否有权限访问所请求得资源得过原创 2022-10-24 12:25:02 · 1500 阅读 · 1 评论 -
Spring Security(九)-- 理解HTTP Basic 和基于表单的登陆身份验证
如果在身份验证失败的情况下,系统的客户期望响应中有特定的内容,就需要这样做。我们可能需要添加或删除一个或多个头信息。或者可以使用一些逻辑来过滤主体信息,以确保应用程序不会向客户端公开任何敏感数据。为了自定义失败身份验证的响应,可以实现AuthenticationEntryPoint。它的commence()方法会接收HttpServletRequest\HttpServletResponse和导致身份验证失败的AuthenticationException。原创 2022-10-21 17:12:33 · 3128 阅读 · 5 评论 -
SpringSecurity(八)--SecurityContext安全上下文
本节我们将讨论安全上下文,我们将分析它是如何工作的、如何从其中访问数据,以及应用程序如何在具有不同的与线程有关的场景中管理它。一般来说,我们为了让后续程序能够使用验证通过人员的信息,都会使用到它,比如编写一个SecurityUtils用来获取用户信息是经常用到的,那么学习它后,你就可以使用安全上下文存储关于已验证用户的详细信息了。原创 2022-10-20 19:12:08 · 4179 阅读 · 2 评论 -
Spring Security(七)-- AuthenticationProvider
Spring Security中的AuthenticationProvider负责身份验证逻辑。AuthenticationProvider接口的默认实现会将查找系统用户的职责委托给UserDetailsService。它还使用PasswordEncoder在身份验证过程中进行密码管理。}AuthenticationProvider的职责是与Authentication接口紧密耦合一起的。authenticate()方法会。原创 2022-10-19 13:54:49 · 5816 阅读 · 0 评论 -
Spring Security(六)--密码处理
一般而言,系统并不以明文形式管理密码,印此密码通常要经过某种转换,这使得读取和窃取密码变得较为困难。对于这一职责,Spring Security定义了一个单独的契约—PasswordEncoder。实现这个契约是为了告知Spring Security如何验证用户的密码。在身份验证过程中,PasswordEncoder会判定密码是否有效。每个系统都会存储以某种方式编码过的密码。最好把密码哈希话存储起来,这样别人就不会读到明文密码了。原创 2022-10-08 17:59:22 · 2006 阅读 · 0 评论 -
SpringSecurity(一)前言以及框架介绍
本节将讨论Spring Security和Spring家族的联系,通过官网可以得知,Spring Security被描述为一种用于身份验证和访问控制的强大且高度可定制的框架,简言之,它就是一个极大简化了的让Spring程序具备安全性保障的框架。你可以在获得其源码。如果要使用Spring Security,至少需要Java 8.原创 2022-09-15 11:41:48 · 1949 阅读 · 3 评论 -
SprIngSecurity实战(二)各种架构中所应用的安全性
该章内容其实仍然属于前言,只是对后面Spring Security对各个架构所需要涉及到的相关概念进行讲解,比如在单体式Web-》前后端分离-》Oauth2的一个架构理念以及Spring Security随着架构的演变是如何去改变它的大体用法的,这些我们都会涉及到,但是更详细的内容后面章节将逐一展示。架构直接影响着为应用程序配置Spring Security的选择;因为安全保障方法取决于我们实现的解决方案,所以Spring Security中的配置也会有所不同。原创 2022-09-15 15:47:30 · 772 阅读 · 0 评论 -
Spring Security(三)--首个Spring Security项目
我们本次demo均是在Spring boot环境下搭建Spring Security的项目,因为Spring boot让我们不需要编写所有的配置,它自己提供了一些预配置项,因此我们可以只重写与实现不匹配的配置。我们也称这种方法为约定大于配置原则!那么本节我们需要了解的有如下内容:(1)创建一个仅具有Spring Security和Web依赖项的项目,看看如果不添加任何配置的话,该项目会如何运行。通过这种方式,我们将了解从默认的身份验证和授权配置中可以预期得到什么。原创 2022-09-21 15:13:13 · 1133 阅读 · 0 评论 -
Spring Security(四)重写默认配置
通过之前的学习,我们已经知道了第一个项目的默认配置,接下来我们就来尝试替换它们。在本节中,我们将介绍.这两个组件参与身份验证的处理,大多数应用程序都会根据其 需求对它们进行自定义,但是关于这两个组件的细节我们仍然是放到后面细讲,目前我们只需了解如何插入自定义实现。原创 2022-09-26 11:36:07 · 1876 阅读 · 1 评论 -
Spring Security(五)--管理用户
UserDetailsManager接口扩展UserDetailsService接口是体现接口分离原则的一个很好的例子,分离接口可以提供更好的灵活性,因为框架不会强迫我们在应用程序不需要的时候实现行为,如果应用程序只需要验证用户,那么实现UserDetailsService契约就足以覆盖所需功能。而如果需要真正管理用户,我们就可以在其基础上自己扩展管理用户的功能亦或者直接实现UserDetailsManager的接口。原创 2022-09-30 14:21:36 · 1403 阅读 · 3 评论