深入理解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相关的,你不必在过滤器之后搞乱一切。

相关推荐
对许1 分钟前
SLF4J: Failed to load class “org.slf4j.impl.StaticLoggerBinder“
java·log4j
鹿屿二向箔2 分钟前
基于SSM(Spring + Spring MVC + MyBatis)框架的咖啡馆管理系统
spring·mvc·mybatis
无尽的大道5 分钟前
Java字符串深度解析:String的实现、常量池与性能优化
java·开发语言·性能优化
小鑫记得努力14 分钟前
Java类和对象(下篇)
java
binishuaio18 分钟前
Java 第11天 (git版本控制器基础用法)
java·开发语言·git
zz.YE20 分钟前
【Java SE】StringBuffer
java·开发语言
老友@20 分钟前
aspose如何获取PPT放映页“切换”的“持续时间”值
java·powerpoint·aspose
颜淡慕潇29 分钟前
【K8S问题系列 |1 】Kubernetes 中 NodePort 类型的 Service 无法访问【已解决】
后端·云原生·容器·kubernetes·问题解决
wrx繁星点点35 分钟前
状态模式(State Pattern)详解
java·开发语言·ui·设计模式·状态模式
Upaaui38 分钟前
Aop+自定义注解实现数据字典映射
java