返回

基于SpringBoot3+JDK17+Shiro+Basic认证的实战指南

后端

Shiro:在 SpringBoot 中实现无缝身份验证

配置与实现

在软件开发中,安全至关重要。Shiro,一个强大的安全框架,可为 Java 应用程序提供身份验证、授权、会话管理和加密等安全特性。本文将深入探讨如何将 Shiro 集成到 SpringBoot 3 项目中,使用 Basic 认证实现用户认证。

1. 引入依赖

第一步是在项目的 pom.xml 文件中引入 Shiro 依赖:

<dependency>
    <groupId>org.apache.shiro</groupId>
    <artifactId>shiro-core</artifactId>
    <version>1.8.0</version>
</dependency>

2. 配置 Shiro

在 SpringBoot 应用中,可通过 application.yml 文件配置 Shiro:

shiro:
  # 开启 Shiro
  enabled: true
  # 设置认证方式为 Basic 认证
  authc:
    basic:
      enabled: true

3. 创建 Realm

为了实现身份验证,需要创建 Realm,它负责执行认证逻辑。使用 SimpleAuthenticationRealm 进行简单的用户名和密码认证:

@Bean
public Realm realm() {
    SimpleAuthenticationRealm realm = new SimpleAuthenticationRealm();

    // 添加用户和密码信息
    realm.addAccount("admin", "admin", "admin");

    return realm;
}

4. 配置 Shiro Filter

为了配置 Shiro 过滤器,需要在 SpringBoot 应用中实现 Filter 类:

@Component
public class ShiroFilterFactoryBean extends org.apache.shiro.spring.web.ShiroFilterFactoryBean {

    @Override
    protected void initFilterBean() throws Exception {
        super.initFilterBean();

        // 添加 Basic 认证过滤器
        Map<String, Filter> filters = getFilters();
        filters.put("basic", new BasicHttpAuthenticationFilter());

        // 配置过滤器链
        Map<String, String> filterChainDefinitionMap = getFilterChainDefinitionMap();
        filterChainDefinitionMap.put("/**", "basic");
    }
}

5. 测试认证

配置完成后,通过向服务器发送请求来测试 Basic 认证。使用浏览器或 Postman 等工具,在请求头中添加 Basic 认证信息,格式为:

Authorization: Basic username:password

例如,对于用户 "admin",密码 "admin",请求头应为:

Authorization: Basic YWRtaW46YWRtaW4=

认证成功后,服务器将返回 200 OK 状态码,否则返回 401 Unauthorized 状态码。

总结

通过这些步骤,已成功将 Shiro 集成到 SpringBoot 3 项目中,并实现 Basic 认证用户认证。在实际项目中,可根据需要进行定制,加强安全保护。

常见问题解答

1. Shiro 是如何实现身份验证的?
Shiro 使用 Realm 来实现身份验证。Realm 负责执行认证逻辑,如检查用户凭据的正确性。

2. Basic 认证是如何工作的?
Basic 认证将用户名和密码编码为 Base64 字符串,并在 HTTP 头中发送。服务器收到请求后,解码凭据并与存储的凭据进行比较。

3. 如何在 Shiro 中使用其他认证方式?
Shiro 支持多种认证方式,包括记住我、JWT 和 OAuth。可以使用相应模块进行配置。

4. 如何在 Shiro 中实现授权?
Shiro 通过角色和权限实现授权。角色是一组权限,权限授予访问特定资源或执行特定操作的权限。

5. 如何在 Shiro 中配置会话管理?
Shiro 提供会话管理支持,包括会话超时、会话过期和会话验证。可通过 Shiro 配置文件进行配置。