如何在Linux上配置Swagger的權(quán)限控制

如何在Linux上配置Swagger的權(quán)限控制

本文介紹如何在linux環(huán)境下為Swagger API文檔添加權(quán)限控制,確保API安全。 這需要結(jié)合spring Security和Swagger進(jìn)行配置。

步驟一:添加依賴項

首先,確保你的項目包含必要的spring security和Swagger依賴。使用maven的pom.xml文件,添加如下依賴:

<dependency>     <groupId>org.springframework.boot</groupId>     <artifactId>spring-boot-starter-security</artifactId> </dependency>  <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>

步驟二:配置Spring Security

創(chuàng)建一個Spring Security配置類,定義訪問控制規(guī)則。以下示例使用內(nèi)存用戶存儲,生產(chǎn)環(huán)境建議使用數(shù)據(jù)庫

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() // 需要認(rèn)證                 .anyRequest().permitAll() // 其他請求允許匿名訪問             .and()             .httpBasic(); // 使用HTTP Basic認(rèn)證     }      @Bean     @Override     public UserDetailsService userDetailsService() {         UserDetails user = User.withDefaultPasswordEncoder()                 .username("user")                 .password("password")                 .roles("USER")                 .build();         return new InMemoryUserDetailsManager(user);     } }

此配置要求訪問Swagger UI和API文檔需要身份驗證。

步驟三:配置Swagger

創(chuàng)建一個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包的實際路徑。

步驟四:運行應(yīng)用并訪問Swagger UI

啟動你的spring boot應(yīng)用,然后在瀏覽器中訪問http://your-server-address:port/swagger-ui.html。 你將需要提供用戶名和密碼(本例中為”user”和”password”)進(jìn)行身份驗證。

總結(jié): 通過以上步驟,你成功地在Linux環(huán)境下為Swagger添加了基本的權(quán)限控制。 記住在生產(chǎn)環(huán)境中使用更安全的認(rèn)證方式和用戶管理機制,例如數(shù)據(jù)庫用戶存儲和更強大的密碼加密算法。 請根據(jù)你的實際項目調(diào)整包路徑和安全配置。

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點贊13 分享