在 Debian 上“启用 Swagger 鉴权”通常指两件事之一:
下面按常见场景说明(以 Spring Boot + Swagger / springdoc-openapi 为例,Debian 只是运行环境,不影响配置)。
@Configuration
@EnableWebSecurity
public class SecurityConfig {
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http
.authorizeHttpRequests(auth -> auth
.requestMatchers(
"/swagger-ui/**",
"/v3/api-docs/**"
).authenticated()
.anyRequest().permitAll()
)
.httpBasic(Customizer.withDefaults());
return http.build();
}
}
访问 Swagger UI 时会要求输入用户名密码。
location /swagger-ui/ {
auth_basic "Swagger";
auth_basic_user_file /etc/nginx/swagger.htpasswd;
proxy_pass http://127.0.0.1:8080;
}
生成密码:
sudo apt install apache2-utils
htpasswd -c /etc/nginx/swagger.htpasswd admin
@Bean
public OpenAPI customOpenAPI() {
return new OpenAPI()
.components(new Components()
.addSecuritySchemes("bearerAuth",
new SecurityScheme()
.type(SecurityScheme.Type.HTTP)
.scheme("bearer")
.bearerFormat("JWT")))
.addSecurityItem(new SecurityRequirement().addList("bearerAuth"));
}
Swagger UI 会出现 Authorize 按钮,输入:
Bearer xxx.yyy.zzz
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.securitySchemes(List.of(apiKey()))
.securityContexts(List.of(securityContext()));
}
private ApiKey apiKey() {
return new ApiKey("JWT", "Authorization", "header");
}
.addSecuritySchemes("oauth2",
new SecurityScheme()
.type(SecurityScheme.Type.OAUTH2)
.flows(new OAuthFlows()
.authorizationCode(new AuthorizationCodeOAuthFlow()
.authorizationUrl("https://auth.example.com/oauth2/authorize")
.tokenUrl("https://auth.example.com/oauth2/token"))))
springdoc.swagger-ui.enabled=false
或
springfox.documentation.swagger.v2.path=/internal-api-docs
如果你能补充说明:
我可以给你更精确的 Debian 配置示例。