Spring Security 6.x
文章平均质量分 92
基于最新的Spring Security 6.1 & Spring Authorization Server 1.1 ,不仅仅是让您会用,而是从实战、原理、源码方面让您深入了解,适用各种场景,解决开发中遇到各种问题。(感谢大家订阅,新建了答疑群【 695465650】)
云烟成雨TD
一个追求有道有术的非典型程序员
展开
-
Spring Security 6.x 系列【72】授权篇之角色分层
在上一篇文档中,我们了解了RBAC访问控制模型,作为一个基于RBAC的认证授权框架,除了支持核心RBAC0,也支持BRAC1中的角色分层。原创 2024-01-22 14:11:24 · 404 阅读 · 0 评论 -
Spring Security 6.x 系列【71】扩展篇之基于角色的访问控制模型(RBAC)
RBAC是的简写,翻译为基于角色的权限访问控制,是在研究访问控制模型基础上发展而来的,是目前应用最广泛的一种模型。将访问权限与角色进行关联,通过给用户分配合适的角色,从而获取该角色的所有访问权限。由于角色/权限之间的变化比起用户/权限之间的变化相对要小得多,减少了权限管理的复杂性,降低了管理的开销灵活地支持了企业的安全策略,并对企业的变化有很大的伸缩性。原创 2024-01-22 14:09:52 · 450 阅读 · 0 评论 -
Spring Security 6.x 系列【70】扩展篇之访问控制技术
在网络信息化环境中,资源不是无限制开放的,而是在一定约束条件下,用户才能使用。例如,普通网民可以浏览网站新闻,但不能修改。由于网络及信息所具有的价值,其难以避免地会受到意外的或蓄意的未经授权的使用和破坏。为此,必须对网络上的资源进行授权和限制,使得只有经过授权的用户才能以合规的方式进行使用。访问控制是指对资源对象的访问者授权、控制的方法及运行机制。访问者又称为主体,可以是用户、进程、应用程序等。而资源对象又称为客体,即被访问的对象,可以是文件、应用服务、数据等。授权。原创 2024-01-17 16:44:35 · 453 阅读 · 0 评论 -
Spring Security 6.x 系列【69】扩展篇之认证技术
认证是一个实体向另外一个实体证明其身份的过程,在认证过程中,需要被证实的实体是声称者,负责检查确认实体是验证者。认证标识) :用来代表实体对象(如人员、设备、数据、服务、应用)的身份标志,确保实体的唯一性和可辨识性,同时与实体存在强关联。一般用名称和标识符 (ID) 来表示,通过唯一标识符,可以代表实体。例如网站中的登录账号。鉴别) :一般是利用口令、电子签名、数字证书、令牌、生物特征、行为表现等相关数字化凭证,对实体所声称的属性进行识别验证的过程。原创 2024-01-17 16:43:31 · 473 阅读 · 0 评论 -
Spring Security 6.x 系列【68】 授权篇之基于注解 & 缓存的访问控制方案
通过之前授权篇的相关学习,我们了解到在登录时,会将用户的角色、权限值存储到对象中,当使用注解进行授权判断时,会从取出相关数据进行表达式计算。在某些场景下,特别是使用JWT认证方案时,如果将权限信息都封装在JWT中,JWT会变得很长很长,所以一般都会舍弃权限信息,只保存用户的基本信息。原创 2023-10-17 10:48:32 · 4289 阅读 · 3 评论 -
Spring Security 6.x 系列【67】认证篇之安装 ApacheDS
官方文档在前两篇文档中,我们简单了解了LDAP的相关内容,为了更好的深入了解,我们可以自己安装一个ApacheDS,并使用工具进行连接,因为LDAP并不是本系列的重点,如果开发中需要用到时,可自行阅读官网相关资料。ApacheDS™全称是,是由Apache开源的一个可扩展和可嵌入目录服务器,完全采用Java语言编写。支持LDAPv3以及Kerberos 5和更改密码协议,它的设计目的是将触发器、存储过程、队列和视图引入到LDAP。原创 2023-10-11 16:44:30 · 870 阅读 · 0 评论 -
Spring Security 6.x 系列【66】认证篇之集成 LDAP 登录
支持基于LADP的身份和授权,接下来我们简单演示下如何集成登录。原创 2023-10-11 16:38:26 · 614 阅读 · 0 评论 -
Spring Security 6.x 系列【65】认证篇之 LDAP 协议
官方文档LDAP即轻量目录访问协议,全称是。是一种基于标准的协议,位于TCP/IP之上,允许客户端在目录服务器中执行各种操作,包括存储和检索数据、验证客户端等。LDAP是一个开放的标准协议,在20世纪八十年代末为电信行业开发的,是一个运营商级别的协议和服务,最新版本LDAPv3于1997年12月正式发布。LDAP是轻量级的,消息使用ASN.1 BER进行编码,这是一种紧凑的二进制格式,编码和解码非常高效。它比JSON或HTTP上的XML要精简得多,并使用长连接与目录服务器进行通信。LDAP是安全的,原创 2023-10-11 16:11:33 · 368 阅读 · 0 评论 -
Spring Security 6.x 系列【64】扩展篇之多线程支持
在之前的文档中,我们有了解过Spring Security在认证成功后,以及再次访问时,会将当前登录用户认证信息SecurityContext通过SecurityContextHolder存储在ThreadLocal中,这样可以在当前线程获取到用户信息。原创 2023-07-26 20:33:24 · 567 阅读 · 0 评论 -
Spring Security 6.x 系列【63】扩展篇之匿名认证
一般在应用系统中,除了登录、主页外,其他都需要用户经过认证才能访问。一般都采用deny-by-default(默认拒绝)来设置访问控制策略。即明确规定允许哪些可以直接访问,除此之外的都需要认证授权。在Spring Security中,会将未认证的请求都设置为匿名认证用户,提供了一种更方便的方式来配置访问控制属性。另一方面,未认证时,SecurityContextHolder中也总是包含一个匿名的Authentication对象,避免为NULL,增强了代码健壮性。原创 2023-07-19 20:19:11 · 1204 阅读 · 0 评论 -
Spring Security 6.x 系列【62】扩展篇之用户登录日志
日志对软件系统来说非常重要,可以根据日志进行状态监控,安全审计,程序调试等功能。用户登陆日志也非常重要,它用来记录用户在系统中进行登录的相关信息。原创 2023-06-28 10:16:37 · 840 阅读 · 1 评论 -
Spring Security 6.x 系列【61】扩展篇之认证和授权事件
Spring Security在进行认证、授权时,可以发布各种事件,我们可以通过监听事件,进行相应操作,比如记录日志。原创 2023-06-25 18:03:14 · 854 阅读 · 1 评论 -
Spring Security 6.x 系列【60】漏洞防护篇之防火墙
Firewall防火墙是互联网安全必不可少的一项技术,用以保护系统安全,防止侵入,一般服务器操作系统都会自带防火墙软件。Spring Security也提供了HTTP防火墙,用于拒绝潜在的危险请求,并对请求和响应进行包装以控制其行为。原创 2023-06-25 14:43:10 · 621 阅读 · 0 评论 -
Spring Security 6.x 系列【59】认证篇之集成Apereo CAS
Central Authentication Service中央认证服务简称为CAS ,是一种基于票据的单点登录、单点注销协议,有CAS 1.0、2.0和3.0三个版本。CAS协议的最新版本为3.0.3,各版本的认证流程基本一致,主要是在上一版本的基础上提供了一些增强功能。原创 2023-06-20 16:52:51 · 862 阅读 · 2 评论 -
Spring Security 6.x 系列【58】授权服务器篇之Oauth 2.0 PKCE规范
PKCE全称是Proof Key for Code Exchange,翻译过来是交换授权码时的证明秘钥,官方读音为pixy。PKCE规范于2015年发布,收录在RFC 7636文件中。OAuth 2.0公共客户端在使用授权码模式时,很容发生授权码拦截攻击,PKCE规范描述了该攻击以及如何防范。原创 2023-06-18 18:00:30 · 1177 阅读 · 2 评论 -
Spring Security 6.x 系列【57】认证篇之集成Keycloak SAML 2.0登录
在上一篇文档,我们安装并简单了解了开源的IAM系统Keycloak,国内也有对应的开源,比如Maxkey、Casdoor。他们都提供了OAuth 2.0、OIDC和 SAML 2.0 协议支持,关于OAuth 2.0、OIDC之前介绍并实现案例的文档已经很多了,所以本篇文档使用Spring Security整合Keycloak SAML 2.0登录。原创 2023-06-14 10:49:22 · 1136 阅读 · 0 评论 -
Spring Security 6.x 系列【56】扩展篇之Keycloak
开源的统一身份认证系统,国外开源比较出名的就是Keycloak。官网简介:Open Source Identity and Access Management(开源的身份认证和访问管理)。原创 2023-06-14 08:00:00 · 426 阅读 · 0 评论 -
Spring Security 6.x 系列【55】认证篇之集成SAML 2.0登录
Spring Security提供了作为SP服务提供方进行SAML 2.0登录的功能,基于SAML 2.0 中Web Browser SSO Profile标准规范实现。自2009年以来,对依赖方SP的支持一直作为一个扩展项目存在。在2019年,开始将其移植到Spring Security本身。类似于2017年开始的对Spring Security的OAuth 2.0支持的过程。原创 2023-06-12 16:15:08 · 2043 阅读 · 0 评论 -
Spring Security 6.x 系列【54】认证篇之SAML 2.0 协议
SAML英文全称为Security Assertion Markup Language,即安全断言标记语言。该标准由安全服务技术委员会OASIS制定,始于2001年,2005年发布SAML 2.0沿用至今。原创 2023-06-12 15:05:06 · 1168 阅读 · 0 评论 -
Spring Security 6.x 系列【53】扩展篇之CORS支持
跨域是由于浏览器的同源策略造成的,跨域资源共享CORS机制,则允许服务器标示其他源,允许访问资源。在使用Spring MVC时,可以添加如下配置解决跨域。原创 2023-06-06 21:00:00 · 1155 阅读 · 7 评论 -
Spring Security 6.x 系列【52】扩展篇之集成第三方登录组件JustAuth
JustAuth是一个开箱即用的整合第三方登录的开源组件。原创 2023-06-05 13:00:50 · 935 阅读 · 0 评论 -
Spring Security 6.x 系列【51】授权篇之动态权限规则
基于请求URL或权限注解的方式,实际都是针对请求进行访问控制,我们可以将请求路径对应的规则放在数据库或缓存,在访问接口时,获取当前请求路径对应的访问规则,然后判断该用户是否有访问权限。原创 2023-06-02 21:50:08 · 1496 阅读 · 2 评论 -
Spring Security 6.x 系列【50】授权服务器篇之Spring Boot 3.1自动配置
Spring Boot 3.1中添加了Oauth2授权服务器Spring Authorization Server支持。原创 2023-06-02 13:10:43 · 955 阅读 · 0 评论 -
Spring Security 6.x 系列【49】授权服务器篇之授权作用域Scope
Scope是OAuth 2.0中一种机制,用于限制客户端访问用户资源的范围,实际也是一种权限控制。客户端可以申请一个或多个Scope,在用户同意授权页面中进行显示,然后用户可以选择同意授权的Scope,客户端使用访问令牌获取资源时,资源服务器可以使用Scope进行权限控制。原创 2023-05-31 20:25:09 · 934 阅读 · 1 评论 -
Spring Security 6.x 系列【48】扩展篇之国际化支持
Spring Security默认支持异常信息的国际化,异常信息包括认证失败和访问被拒绝异常,例如密码错误时,英文环境下会提示Bad credentials,中文环境时则提示用户名或密码错误。原创 2023-05-31 17:17:04 · 1011 阅读 · 0 评论 -
Spring Security 6.x 系列【47】配置篇之HttpSecurity、WebSecurity
在之前的文档中,关于配置,我们都是基于HttpSecurity构建SecurityFilterChain,也了解了很多Spring Security的相关配置,接下来继续介绍一些其他用法。原创 2023-05-30 12:47:06 · 1589 阅读 · 1 评论 -
Spring Security 6.x 系列【46】漏洞防护篇之安全相关的HTTP响应头
HeaderWriterFilter字面理解为请求头写入过滤器,他的作用是将某些头信息添加到响应中,添加某些启用浏览器保护的头信息非常有用,如X-Frame-Options、X-XSS-Protection、X-Content-Type-Options等,增加一些安全性。原创 2023-05-30 12:39:39 · 1154 阅读 · 0 评论 -
Spring Security 6.x 系列【45】微服务篇之搭建统一认证服务
在上篇文档中,我们学习了在微服务架构下,如何搭建统一身份认证,并推荐使用Session管理会话,接下来我们搭建一个微服务项目,并实现分布式环境下的认证功能。原创 2023-05-26 17:07:00 · 3261 阅读 · 35 评论 -
Spring Security 6.x 系列【44】微服务篇之统一身份认证实现方案
在微服务架构中,前后端分离基于JSON进行数据交互,前端不仅有浏览器,还会有APP、H5、小程序等。微服务中的后台应用一般都会按功能职责拆分为很多个独立应用,比如一个电商系统,会拆分为用户、订单、商品、库存、支付、商家管理等。一个大型项目后台应用可能有成千上万个,每个独立服务的职责都是单一的,对于登录认证来说,也是需要一个独立的服务,不可能每个服务实例都提供登录功能。原创 2023-05-26 17:06:27 · 1434 阅读 · 0 评论 -
Spring Security 6.x 系列【43】授权服务器篇之设备授权模式
Device Authorization Grant设备授权来自于OAuth 2.0 RFC 8628文件规范,应用于缺少浏览器的连接设备,如智能电视、媒体控制台、数字相框和打印机等硬件设备,用户可以授权设备访问受保护资源。原创 2023-05-18 17:08:12 · 888 阅读 · 0 评论 -
Spring Security 6.x 系列【42】授权服务器篇之自定义密码模式
Spring Authorization Server基于Oauth 2.1,不再支持passeord密码授权模式,对于使用了Spring Security Oauth框架的项目来说,很多都使用了密码模式,接下来我们自定义开发密码模式,其他自定义模式参照该流程实现即可。原创 2023-05-16 16:43:05 · 1052 阅读 · 1 评论 -
Spring Security 6.x 系列【41】授权服务器篇之令牌端点自定义配置
上篇文档中我们分析Spring Authorization Server的令牌端点/oauth2/token,实际开发中,也需要很多自定义配置。原创 2023-05-16 10:43:19 · 709 阅读 · 0 评论 -
Spring Security 6.x 系列【40】授权服务器篇之令牌端点源码解析
接下来我们分析下Spring Authorization Server令牌端点/oauth2/token。原创 2023-05-15 23:53:10 · 493 阅读 · 0 评论 -
Spring Security 6.x 系列【39】授权服务器篇之授权端点自定义配置
在上篇文档中,我们了解了授权端点的整个执行流程,在实际开发中,默认的处理方式可能不符合业务场景,需要自定义配置,Spring Authorization Server也提供了强大的扩展能力。原创 2023-05-15 22:14:27 · 678 阅读 · 0 评论 -
Spring Security 6.x 系列【38】授权服务器篇之授权端点源码解析
Spring Authorization Server提供了标准的Oauth2授权端点/oauth2/authorize,接下来我们分析下授权端点整个执行流程。原创 2023-05-15 22:08:22 · 770 阅读 · 17 评论 -
Spring Security 6.x 系列【37】授权服务器篇之自定义登录、同意授权页面
在Spring Security 6.x 系列【28】授权服务器篇之Spring Authorization Server 1.0 入门案例授权码模式中,使用的是Spring Authorization Server提供的默认登录和授权页面,在实际开发集成时,需要自定义。注: 前后端分离场景下,由前端编写相关页面,后端提供JSON,在授权流程中,就需要前端进行各种页面跳转,在了解其原理后,也很容易实现。原创 2023-05-12 22:38:52 · 1306 阅读 · 0 评论 -
Spring Security 6.x 系列【36】授权服务器篇之OpenID Connect 1.0
Spring Authorization Server是一个授权服务器框架,提供 OAuth 2.1 和 OpenID Connect 1.0 规范及其他相关规范的实现。在之前我们已经了解了OAuth 2的相关实现,接下来了解OpenID Connect 1.0协议的相关知识,并进行案例演示。原创 2023-05-12 09:58:05 · 796 阅读 · 2 评论 -
Spring Security 6.x 系列【35】认证篇之基于JWT的集成方案
在云计算、微服务流行的技术架构下,大型项目中的后端服务可能成千上万,用户端不仅仅是浏览器网站,可能还包含移动APP、机器终端等应用,传统的Cookie Session方式可能会面临一些问题。原创 2023-05-06 13:39:20 · 1576 阅读 · 0 评论 -
Spring Security 6.x 系列【34】认证篇之前后端分离场景下的集成方案
Spring Security提供了开箱即用的默认配置,例如默认的登录、登出页面,但在实际开发中,往往需要进行自定义改造,比如前后端分离场景下,前后端通过JSON来进行数据交互,是否操作成功都需要前端通过状态码判断,所有的页面也都需要前端自己去跳转。原创 2023-05-04 22:18:47 · 1805 阅读 · 6 评论 -
Spring Security 6.x 系列【33】OAuth2认证篇之资源服务器
在之前的案例中,演示了Spring Security对Oauth2的相关支持,比如客户端、授权服务器,接下来学习Oauth2资源服务器。原创 2023-05-04 14:26:39 · 1072 阅读 · 0 评论