深入理解Spring Security:认证机制解析

深入理解Spring Security:认证机制解析

在这篇文章中,我们将解析Spring Security的神奇之处,并理解认证机制的实际运作,通过了解Spring Security的基本要素,我们将涉及一些重要的概念。首先,Spring Security如何自举以开始执行任何工作。其次,它如何进行身份验证并确定用户是谁。通过这篇文章,你将揭开神秘的面纱。你将完全了解Spring Security是如何运作的,并且你也将做好准备。来实现一些中级的认证机制。

好的,让我们从了解Spring Security如何开始其工作的第一部分开始吧。你不会调用Spring Security,也不会调用它的API。你需要将Spring Security的起步依赖项添加到你的Spring Boot项目中,框架会立即开始处理请求。它是如何做到的呢?Spring Security将一个过滤器添加到你的应用中来处理请求。如果你不知道,过滤器实际上是Servlet规范中的一种构造,它允许你拦截请求。

假设你有一个请求需要分派给某个Servlet,但你可以创建一系列过滤器,并在请求到达Servlet之前让它经过这些过滤器。过滤器有机会在请求到达Servlet之前对其进行任何处理或操作,并且实际上,它甚至可以阻止某些请求达到Servlet。通常情况下,URL和Servlet方法之间是一对一的映射关系。一个URL通常由一个Servlet方法处理,但是过滤器可以应用于广泛的URL范围。

例如,你可以说,将此过滤器映射到所有以admin开头的用户,或者例如,将此过滤器应用于应用程序中的所有用户。因此,在Web应用程序的情况下,这就是Spring Security的做法。当你将Spring Security的起步依赖项添加到你的Spring Boot项目中时,它会执行过滤器映射,拦截所有请求,并将其映射到Spring Security的过滤器调用DelegatingFilterProxy

如果你不是在Spring Boot应用程序中工作,你需要手动添加这个过滤器来拦截所有请求。因此,查看这段代码将让你了解幕后发生了什么。这个过滤器映射到所有传入的请求。这就是Spring Security如何根据你的配置允许或阻止请求的能力,因为它监听并拦截所有东西。请注意,对于非Web应用程序来说,进行方法级别的安全性处理是一回事,Web应用程序似乎是最常见的使用案例,这就是它在这里起作用的方式。

现在可能会有人问,为什么我要添加授权?只有这一个URL在我的应用中。其他的不需要被每个人都访问。所以为什么我要添加Spring Security来拦截每一个请求?我只想看看这一个。你可以,或者一组URL。好的,原因是,为了使应用程序安全,它必须受到所有漏洞的保护,而不能只专注于少数需要认证的URL。如果你只在应用程序的一部分中添加Spring Security,而让应用程序的其他部分存在漏洞,那么你的整个应用程序就不安全,显然是不行的。所以无论你是否想让应用程序中的一个URL由Spring Security保护,还是多个URL,你的配置都是直接与Spring Security相关的,你不必在过滤器之后搞乱一切。

现在我想告诉你,你可能会问,如果我想要添加授权,怎么办?只有这一个URL在我的应用程序中。其他的不需要被每个人都访问。所以为什么我要添加Spring Security来拦截每一个请求?我只想看看这一个。你可以,或者一组URL。好的,原因是,为了使应用程序安全,它必须受到所有漏洞的保护,而不能只专注于少数需要认证的URL。如果你只在应用程序的一部分中添加Spring Security,而让应用程序的其他部分存在漏洞,那么你的整个应用程序就不安全,显然是不行的。所以无论你是否想让应用程序中的一个URL由Spring Security保护,还是多个URL,你的配置都是直接与Spring Security相关的,你不必在过滤器之后搞乱一切。

相关推荐
你想考研啊17 分钟前
linux安装jdk和tomcat和并自启动
java·linux·tomcat
星释21 分钟前
Rust 练习册 :Leap与日期计算
开发语言·后端·rust
悟能不能悟2 小时前
java的java.sql.Date和java.util.Date的区别,应该怎么使用
java·开发语言
高山上有一只小老虎3 小时前
java 正则表达式大全
java·正则表达式
_院长大人_4 小时前
设计模式-工厂模式
java·开发语言·设计模式
码事漫谈4 小时前
C++死锁深度解析:从成因到预防与避免
后端
凌波粒4 小时前
MyBatis完整教程IDEA版(2)--ResultMap/注解/一对多/多对一/lombok/log4j
java·intellij-idea·mybatis
码事漫谈5 小时前
智能体颠覆教育行业:现状、应用与未来展望调研报告
后端
蓝-萧5 小时前
【玩转全栈】----Django基本配置和介绍
java·后端
priority_key5 小时前
排序算法:堆排序、快速排序、归并排序
java·后端·算法·排序算法·归并排序·堆排序·快速排序