认识SpringSecurity

简介:

1-SpringSecurity核心功能
1.认证
什么是认证:
1.什么是权限管理
SpringSecurity作为一款成熟的鉴权框架,目前支持的认证机制非常的全,这里我们可以简单了解一下:image.png

表单认证
OAuth2.0认证
SAML2.0认证
CAS认证
RememberMe 自动认证
JAAS认证
OpenID 去中心化认证
X509认证
Http Basic认证
Http Digest认证
而SpringSecurity不仅可以支持上面的认证机制,还可以通过引入第三方依赖支持更多认证方式,同时也允许用户自定义认证逻辑(这个我们后面会讲)。
2.鉴权
基于上面的多种认证方式(实际那种认证都不影响鉴权),SpringSecurity支持基于URL的请求授权、方法访问授权、支持SPEL表达式访问控制、支持ACL自定义对象安全,同时支持动态授权配置、支持RBAC权限模型,简单一句话:基本没有SpringSecurity做不了的鉴权。
3.其他
除了熟知的认证、授权两个核心功能,SpringSecurity还可以自动防御很多网络攻击,如CSRF攻击等,可参照:

常见的网络攻击
恶意软件“恶意软件”一词用于描述具有险恶意图的软件,包括间谍软件、勒索软件、病毒和蠕虫。恶意软件通常会在用户点击危险链接或邮件附件时通过漏洞侵入网络,而这些链接或附件随后会安装危险的软件。一旦进入系统内部,恶意软件会执行以下操作:阻止对网络关键组件的访问(勒索软件)安装恶意软件或其他有害软件通...
微服务技术栈
2-SpringSecurity核心架构
SpringSecurity的种种功能,都是基于过滤器实现的,这些过滤器根据默认或用户指定的顺序(@Order注解或实现Ordered接口)排列,形成一个过滤器链。
1.过滤链
SpringSecurity的功能实现关键就是依赖过滤器链
Spring Security 的 Servlet 支持是基于 Servlet Filter 的,因此首先大致了解一下 Filter 的作用是有帮助的。下图显示了单个 HTTP 请求的处理程序的典型分层:
客户端(广义的前端)向应用程序(广义的后端)发送请求,容器根据请求URI路径创建FilterChain,其中包含应处理 HttpServletRequest的 Filter实例和 Servlet(可以简单理解就是一个运行的tomcat容器、WebLogic容器)。在 SpringMVC 应用程序中,Servlet 是 DispatcherServlet 的实例。一个 Servlet 最多可以处理一个 HttpServletRequest 和 HttpServletResponse。大致实现代码如下:
2.委托过滤代理
如果用户需要注册自己的过滤器标准,就可以采用委托过滤处理
Spring 提供了一个Filter名为 的实现DelegatingFilterProxy,允许在 Servlet 容器的生命周期和 Spring 的ApplicationContext。Servlet容器允许Filter使用自己的标准注册实例。您可以借助DelegatingFilterProxy通过标准 Servlet 容器机制进行注册,但将所有工作委托给实现Filter。
DelegatingFilterProxy从查找Bean Filter ApplicationContext然后调用Bean Filter,大致实现代码:
3.过滤器链代理
SpringSecurity的过滤器链是通过FilterChainProxy嵌入到Web项目的原生过滤器链中
Spring Security 的 Servlet 支持包含在FilterChainProxy。FilterChainProxy是 Spring Security 提供的特殊功能Filter,允许Filter通过 委托给许多实例SecurityFilterChain。由于FilterChainProxy是一个 Bean,因此它通常包装在DelegatingFilterProxy中。
简单来说:SpringSecurity的过滤器链是通过FilterChainProxy嵌入到Web项目的原生过滤器链中。而这样的过滤链也不止一个,形如下面的安全过滤链中的图示,右侧就为我们展示了多个过滤链情况。
4.安全过滤链
过滤器链也会有多个,如请求URI:/user/和/admin/就可以是两个过滤器链,对应下图右侧
SecurityFilterChainFilterChainProxy 使用它来确定Filter应为当前请求调用哪些 Spring Security 实例。
下图显示了多个SecurityFilterChain实例
5.处理安全异常
允许将和ExceptionTranslationFilter转换为 HTTP 响应。AccessDeniedExceptionAuthenticationException
ExceptionTranslationFilter作为安全过滤器之一插入FilterChainProxy中。
ExceptionTranslationFilter下图展示了与其他组件的关系:
首先,ExceptionTranslationFilter调用FilterChain.doFilter(request, response)应用程序的其余部分。
如果用户未经过身份验证或者是AuthenticationException,则开始身份验证。
SecurityContextHolder被清除。
HttpServletRequest保存后,以便在身份验证成功后可用于重放原始请求。
用于AuthenticationEntryPoint向客户端请求凭据。例如它可能会重定向到登录页面或发送WWW-Authenticate标头。
否则,如果它是AccessDeniedException,则Access Denied。调用AccessDeniedHandler来处理拒绝访问。

相关文章
|
2月前
|
安全 Java 应用服务中间件
|
4月前
|
人工智能 自然语言处理 数据安全/隐私保护
AI生成的文本:如何识破机器的“笔迹”?
AI生成的文本:如何识破机器的“笔迹”?
806 85
|
算法
【Simulink】极值搜索控制 Extremum Seeking Control(无模型控制)
【Simulink】极值搜索控制 Extremum Seeking Control(无模型控制)
|
3月前
|
监控 数据挖掘 API
淘宝天猫商品详情API全攻略
淘宝天猫商品详情API是淘宝开放平台的核心接口,支持通过商品ID获取标题、价格、库存、SKU等全维度信息,采用RESTful设计,实时高效,适用于比价系统、库存监控、智能选品等电商应用开发与数据分析场景。
|
2月前
|
人工智能 Java 网络安全
|
2月前
|
消息中间件 人工智能 NoSQL
RocketMQ:A2A协议实现多智能体优化
Agentic AI 时代已至,在智能客服、代码生成、流程自动化等场景中,多智能体(Multi-Agent)协作正从构想走向落地。然而,当多个 Agent 需要像一个团队那样高效协作时,脆弱的通信机制可能因网络抖动或服务宕机,就让整个系统瞬间瘫痪,导致昂贵的计算任务失败、会话状态丢失。如何为这些聪明的“数字员工”们构建一个真正可靠、高效的通信基座? 本文将为您介绍 Apache RocketMQ 全新推出的轻量级通信模型 LiteTopic,如何在 AI 应用场景中有效简化系统架构、提升稳定性与可靠性,并结合 A2A(Agent-to-Agent)协议与阿里巴巴AgentScope 框架的生产
|
2月前
|
Kubernetes 网络协议 容器
【k8s-1.34.2安装部署】七.coredns-v1.13.1安装
本章介绍如何安装并验证coredns-v1.13.1。下载coredns.yaml.base文件,替换镜像地址、DNS域、内存限制及服务IP,应用配置后通过svc和pod验证CoreDNS解析功能是否正常。
276 11
|
3月前
|
存储 Web App开发 前端开发
新手如何建站.新手建站的全流程
建站是通过整合域名、服务器等要素搭建可访问数字平台的过程,分自助建站、CMS系统和代码开发三类工具。核心流程包括需求规划、域名注册(实名认证)、服务器配置(国内需ICP备案),搭建后填充内容并测试优化,解析域名上线,做好后续维护。
418 10
|
2月前
|
安全 Java 开发工具
整合SpringSecurity
本文介绍了Spring Security与Spring Boot的整合步骤:引入依赖、启动验证及登录测试。通过日志变化和自动跳转至login页面验证集成成功,使用默认用户名user和控制台生成的动态密码登录后,可访问受保护资源。完整代码见GitHub仓库Day01分支。
|
6月前
|
存储 新零售 安全
阿里云盘企业版收费标准、功能支持、存储配置及用户数全解析
阿里云盘企业版提供高性价比存储方案,500GB仅需169元/年,支持协同办公、权限管理、智能文件管理、多重安全防护及卓越性能,适用于多行业企业高效办公。
1051 0