在企业应用系统安全方面,比较常用的安全框架有 SpringSecurity 和 Apache Shiro,相对于Shiro, Spring Security功能强大、扩展性强,同时学习难度也稍大一些。Spring Security是专门针对 Spring 项目的安全框架,关于 Spring Security 的应用,我们可以通过专业书籍来学习,在本章我们重点放在Spring Boot对Spring Security的集成以及相关组件的介绍。
在具体项目实践中,认证和权限是必不可少的,特别是 Web 项目注册、登录、访问权限等场景。Spring Security 致力于为 Java 应用提供认证和授权管理,同时,它也是 Spring Boot官方推荐的权限管理框架。
Spring Security 基于 Spring,是一个能够为企业应用系统提供声明式安全访问控制解决方案的安全框架。Spring Security充分利用了 Spring IoC (控制反转 Inversion of Control)、DI ( 依赖注入 Dependency Injection)和 AOP(面向切面编程)等特性来实现相关的功能,并提供了--组可以在 Spring 应用上下文中配置的 Bean。
在 Spring Boot 中,使用 Spring Security 只 需简单地引入 spring-boot-starter-security 即可。
在 Spring Boot 中 对 oauth2 、 reactive 和 servlet 进 行 了 支 持 相 关 类 均 位 于spring-boot-autoconfigure 项目下的 org.springframework. boot.autoconfigure.security 包中。
Spring Boot 项目引入 spring-boot-starter-security 之后,再次访问之前的 URL,会发现页面跳转到--个 login 的登录界面。这便是 Security 在 SpringBoot 中的默认配置生效了。此时,可以在 application 配 置文件中指定以下内容,重启项目输入用户名和密码登录即可正常访问。
spring . security. user . name=user
spring. security . user. password=password
spring. security. user . roles=USER
下面,我们就逐步分析 Spring Boot 中这一自动配置机制是如何实现的。
同其他自动配置一样,在 spring-boot-autoconfigure 项目的 META-INF/spring.factories 中注册了 Security 相关的自动配置类。
# Auto Configure
org. springframework . boot . autoconfigure . EnableAutoConfiguration=\
org. springframework. boot . autoconfigure. security . servlet . SecurityAutoConfigu
ration,\
org. springframework . boot . autoconfigure . security. servlet .UserDetailsserviceA
uto-
Configuration, \org. springframework . boot . autoconfigure . security . servlet . SecurityFilterAutoC
onfi-
guration, \
org. springframework . boot . autoconfigure . security . reactive. ReactiveSecurityAu
to-
Configuration, \
org. springframework . boot . autoconfigure . security . reactive. ReactiveUserDetailS-
ServiceAutoConfiguration, \
org. springframework . boot . autoconfigure . security . oauth2. client . servlet . 0Auth
2Client-
AutoConfiguration,\
org. springframework. boot . autoconfigure . security . oauth2. client . reactive . Reac
tive0-
Auth2ClientAutoConfiguration, \
org. springframework . boot . autoconfigure . security . oauth2. resource . servlet .0Au
th2-
ResourceServerAutoConfiguration, \
org. springframework. boot . autoconfigure . security . oauth2. resource . reactive. Re
active-
OAuth2ResourceServerAutoConfiguration, \
通过 spring.factories 中的注册可以看出,针对 Security 有大量的自动配置类,涉及 servlet、reactive 、 oauth2 等 自 动 配 置 。我 们 这 里 重 点 介 绍 SecurityAutoConfiguration 和 Se-curityFilterAutoConfiguration。
本文就是愿天堂没有BUG给大家分享的内容,大家有收获的话可以分享下,想学习更多的话可以到微信公众号里找我,我等你哦。