本文介紹如何在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)整包路徑和安全配置。