You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot中为所有接口请求添加Basic Auth认证头的实现方法咨询

Spring Boot 全局API添加Basic Auth认证实现参考

Spring官方针对接口认证场景默认推荐使用Spring Security组件完成Basic Auth配置,对应的实现逻辑已纳入Spring Security官方标准规范,按照以下流程开发即可符合Spring生态的合规要求。

实现步骤

1. 引入依赖

根据项目使用的构建工具添加Spring Security starter依赖:

  • Maven配置(pom.xml)
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>
  • Gradle配置(build.gradle)
implementation 'org.springframework.boot:spring-boot-starter-security'

2. 选择适配的配置方式

配置文件快速配置(适合简单场景)

无需额外代码,直接在application.yml/application.properties中配置全局认证账号密码,默认自动对所有接口开启Basic Auth校验:

spring:
  security:
    user:
      name: your-auth-username
      password: your-auth-password

代码自定义配置(适合需要灵活调整规则的场景)

如果需要配置多用户、放行指定接口、对接数据库查询用户信息等自定义逻辑,新增Security配置类即可:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.provisioning.InMemoryUserDetailsManager;
import org.springframework.security.web.SecurityFilterChain;

@Configuration
@EnableWebSecurity
public class SecurityConfig {

    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        http
            // 配置请求校验规则:所有接口都需要认证,可自行添加放行规则
            .authorizeHttpRequests(auth -> auth.anyRequest().authenticated())
            // 启用Basic Auth认证
            .httpBasic();
        return http.build();
    }

    // 配置用户信息,也可自行实现对接数据库查询用户的逻辑
    @Bean
    public UserDetailsService userDetailsService() {
        UserDetails user = User.withUsername("customUser")
            .password(passwordEncoder().encode("customPass123"))
            .roles("USER")
            .build();
        return new InMemoryUserDetailsManager(user);
    }

    // 配置密码加密器,禁止明文存储密码
    @Bean
    public PasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder();
    }
}

注意事项

  • Basic Auth本身不会加密传输认证凭证,生产环境必须配合HTTPS使用,避免账号密码泄露
  • 如果需要放行部分不需要认证的接口,可以在authorizeHttpRequests配置中添加规则,示例:.requestMatchers("/public/**").permitAll()
  • 不要使用明文存储密码,推荐使用BCrypt等不可逆加密算法处理密码存储逻辑

内容的提问来源于stack exchange,提问作者ban29

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 06:39:03