通常,公司的项目都会有严格的认证和授权操作,在Java开发领域常见的安全框架有Shiro和Spring Security。Apache Shiro是一个开源的轻量级Java安全管理框架,提供认证、授权、密码管理、缓存管理等功能,相对于Spring Security框架更加直观,易用,同时也能提供健壮的安全性。
对于Spring Boot项目,Shiro官方提供了shiro-spring-boot-web-starter来简化Shiro在Spring Boot中的配置,不需要手动整合。
Shiro 核心组件
Shiro有三大核心组件,即Subject,SecurityManager和Realm,如图所示:
Spring Boot 整合 Shiro
1. 管理shiro版本号
<properties>
<shiro.version>1.6.0</shiro.version>
<java.version>1.8</java.version>
<jmeter.version>5.4.1</jmeter.version>
</properties>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-spring-boot-web-starter</artifactId>
<version>${shiro.version}</version>
</dependency>
3. ShiroConfig类
①. 创建ShiroConfig配置类,并添加注解@Configuration
②. 在配置类中创建3个Bean,ShiroFilterFactoryBean、DefaultWebSecurityManager和 Realm
3.1 创建Realm Bean
Realm Bean是ShiroConfig配置类中的第1个Bean,此处只展示一个LdapReam Bean。注解@DependsOn表示组件依赖,下图中表示依赖lifecycleBeanPostProcessor。LifecycleBeanPostProcessor用来管理shiro Bean的生命周期,在LdapReam创建之前先创建lifecycleBeanPostProcessor。