linux

如何在Linux环境中配置Swagger安全策略

小樊
40
2025-10-07 11:37:40
栏目: 智能运维

在Linux环境中配置Swagger安全策略,通常涉及到使用Spring Security来保护你的Swagger UI和API文档。以下是一个基本的步骤指南:

1. 添加依赖

首先,确保你的Spring Boot项目中包含了必要的依赖。你需要spring-boot-starter-securityspringfox-swagger2以及springfox-swagger-ui

<dependencies>
    <!-- Spring Boot Starter Security -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>
    
    <!-- Swagger -->
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger2</artifactId>
        <version>2.9.2</version>
    </dependency>
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger-ui</artifactId>
        <version>2.9.2</version>
    </dependency>
</dependencies>

2. 配置Spring Security

创建一个Spring 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.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .authorizeRequests()
                .antMatchers("/swagger-ui.html", "/webjars/**", "/swagger-resources/**", "/v2/api-docs").authenticated()
                .anyRequest().permitAll()
            .and()
            .formLogin()
            .and()
            .httpBasic();
    }

    @Bean
    public PasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder();
    }
}

3. 配置Swagger

创建一个Swagger配置类来启用Swagger并配置API文档。

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@Configuration
@EnableSwagger2
public class SwaggerConfig {

    @Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2)
            .select()
                .apis(RequestHandlerSelectors.basePackage("com.example.demo"))
                .paths(PathSelectors.any())
            .build();
    }
}

4. 运行应用程序

启动你的Spring Boot应用程序。你应该能够访问Swagger UI(通常是http://localhost:8080/swagger-ui.html),并且会被重定向到登录页面。

5. 配置用户认证

你可以通过多种方式配置用户认证,例如使用内存中的用户、数据库用户或LDAP用户。以下是一个简单的内存中用户配置示例:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.crypto.password.PasswordEncoder;

@Configuration
public class UserConfig {

    @Bean
    public PasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder();
    }

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.inMemoryAuthentication()
            .withUser("user")
            .password(passwordEncoder().encode("password"))
            .roles("USER");
    }
}

6. 测试

现在,当你尝试访问Swagger UI时,你应该会被要求进行身份验证。使用你在UserConfig中配置的用户名和密码进行登录。

通过这些步骤,你可以在Linux环境中配置Swagger的安全策略,确保只有经过身份验证的用户才能访问Swagger UI和API文档。

0
看了该问题的人还看了