登录
首页 >  文章 >  linux

Linux上Swagger权限控制配置攻略

时间:2025-04-01 17:06:33 121浏览 收藏

本文提供在Linux环境下为Swagger API文档配置权限控制的完整指南,主要利用Spring Security实现安全访问。 通过添加Spring Security和Swagger依赖,配置Spring Security访问控制规则(示例中使用内存用户存储,生产环境建议使用数据库),以及配置Swagger扫描路径,最终实现对Swagger UI和API文档的HTTP Basic认证。 文章详细讲解了每个步骤,并提供代码示例,帮助开发者快速在Linux系统上部署安全的Swagger API文档。 请注意生产环境需采用更安全的认证方式和用户管理机制。

如何在Linux上配置Swagger的权限控制

本文介绍如何在Linux环境下为Swagger API文档添加权限控制,确保API安全。 这需要结合Spring Security和Swagger进行配置。

步骤一:添加依赖项

首先,确保你的项目包含必要的Spring Security和Swagger依赖。使用Maven的pom.xml文件,添加如下依赖:

org.springframework.bootspring-boot-starter-securityio.springfoxspringfox-swagger22.9.2io.springfoxspringfox-swagger-ui2.9.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.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.provisioning.InMemoryUserDetailsManager;

@Configuration
@EnableWebSecurity
public class WebSecurityConfig 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()
            .httpBasic(); // 使用HTTP Basic认证
    }

    @Bean
    @Override
    public UserDetailsService userDetailsService() {
        UserDetails user = User.withDefaultPasswordEncoder()
                .username("user")
                .password("password")
                .roles("USER")
                .build();
        return new InMemoryUserDetailsManager(user);
    }
}

此配置要求访问Swagger UI和API文档需要身份验证。

步骤三:配置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")) // 替换成你的controller包路径
                .paths(PathSelectors.any())
                .build();
    }
}

记得将"com.example.demo"替换为你的Controller包的实际路径。

步骤四:运行应用并访问Swagger UI

启动你的Spring Boot应用,然后在浏览器中访问http://your-server-address:port/swagger-ui.html。 你将需要提供用户名和密码(本例中为"user"和"password")进行身份验证。

总结: 通过以上步骤,你成功地在Linux环境下为Swagger添加了基本的权限控制。 记住在生产环境中使用更安全的认证方式和用户管理机制,例如数据库用户存储和更强大的密码加密算法。 请根据你的实际项目调整包路径和安全配置。

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于文章的相关知识,也可关注golang学习网公众号。

相关阅读
更多>
最新阅读
更多>
课程推荐
更多>