前言
在深入了解Spring Security的相关功能之后,一直陷入了深深的纠结之中:是一片长文搞定,还是再搞个专栏。
终于,用上了AI后,不再纠结怎么排版内容了。自此,我也明白了,饭要一口一口吃。
Spring Security概述
Spring Security是一款提供认证、授权、以及针对常见(网络)攻击的防御的框架。它为保护命令式和反应式应用程序提供了一流的支持,是保护基于Spring的应用程序的事实标准。
- 从官方的介绍,我们可以看到他就是为基于Spring的应用量身定制的。这也是为什么我们如果使用Spring MVC/Spring Boot继承Spring Security如此丝滑的原因。
- 三个关键词:认证、授权、以及针对常见(网络)攻击的防御
记住着三个关键词,因为他直接代表着Spring Security提供的三大核心功能/特性。
Why Spring Security
Spring Security的特性
Spring Security的三个关键词就是他的特性。
- Authentication-认证:Spring Security提供通用的登录认证功能,同时支持Servlet应用,也能支持WebFlux这种响应式应用。
- Authorization-授权:Spring Security为授权提供了全面的支持。同时支持基于Request的授权和基于方法的授权。
- Protection Against Exploits-防范漏洞:结合常见的防范手段,提供支持:
- Cross Site Request Forgery:跨域请求伪造
- Response Header:提供通用的响应头设置,为功能性、常见的网络安全响应头提供支持,同时设置默认的请求头。
- Request Header: 通过请求头可将http请求强制使用https.
要回答这个问题,就不得不对比一下另一款流行的安全框架:Shiro
框架的使用层面
Spring Security | Shiro | |
---|---|---|
集成难易度 | 与Spring框架无缝集成,可以很方便地与其他Spring组件一起使用 | 需要与Spring进行整合开发,但配置和使用都比较简单 |
活跃度和资源 | 庞大的社区资源和文档支持,有大量使用案例和文档可供参考 | 活跃的社区,为开发者提供交流和帮助平台 |
依赖性 | 依赖于Spring容器 | 不依赖于任何框架或容器,可以独立运行 |
使用复杂度 | 功能丰富,使用起来可能稍微复杂一些 | API设计简洁,易于理解和使用 |
定制性 | 支持自定义安全注解和编程式访问控制,可根据项目需求进行定制化开发 | 提供简洁的API和高度灵活性,可根据项目需求进行定制化开发 |
性能 | 性能表现良好,具体性能因使用场景而异 | 在缓存等方面可能具有更好的性能表现 |
功能对比层面
功能 | Spring Security | Shiro |
---|---|---|
身份认证 | 支持多种身份认证机制,包括基于表单、HTTP Basic和HTTP Digest等 | 提供多种身份认证机制,包括基于表单、HTTP Basic和HTTP Digest等 |
授权 | 支持注解和配置文件定义访问控制策略,支持基于表达式的访问控制 | 提供丰富的授权功能,可以使用注解或配置文件定义访问控制策略 |
会话管理 | 支持会话管理功能,包括跨站点请求伪造(CSRF)保护和会话失效时间设置等 | 提供会话管理功能,但需要开发者自行实现跨站点请求伪造(CSRF)保护等安全特性 |
异常处理 | 提供内置的异常处理机制。提供跳转到登录前的请求,也可配置跳转到指定页面 | 提供内置的异常处理机制。定制登录成功后的跳转请求提供一定的支持,但需要自行实现完整功能 |
RememberMe功能< |