gpt4 book ai didi

swagger - 如何在 Spring Boot 应用程序的 Swagger API 中提供身份验证

转载 作者:行者123 更新时间:2023-12-02 02:51:53 25 4
gpt4 key购买 nike

我已经集成了 Swagger 以使用 Spring Boot 为 Spring REST 应用程序生成 API 文档。它运行良好,当我点击 URL 时,我可以看到生成的 API 文档:http://localhost:8080/test/swagger-ui.html我的问题是如何限制对 API 的访问?基于硬编码的用户名和密码的基本身份验证至少对于开始时应该足够好了。我使用 maven 添加“swagger2”依赖项。

这是 pom.xml:

<dependency>                                                                           
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.7.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.7.0</version>
</dependency>

这是 Swagger 的配置:

@Configuration                                                                         
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.basePackage("com.eeocd.test.ws.resource"))
.build();
}
}

最佳答案

您可以通过向 Docket 对象添加 securityScheme 和 securityContext 来启用身份验证。

@Configuration                                                                         
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.basePackage("com.eeocd.test.ws.resource"))
.build()
.securitySchemes(newArrayList(basicAuth()))
.securityContexts(newArrayList(securityContext()));
}
private BasicAuth basicAuth() {
BasicAuth ba = new BasicAuth("basic");
return ba;
}

private SecurityContext securityContext() {
return SecurityContext.builder()
.securityReferences(defaultAuth())
.forPaths(apiPaths())
.build();
}

private List<SecurityReference> defaultAuth() {
AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
authorizationScopes[0] = authorizationScope;
return newArrayList(new SecurityReference("basic", authorizationScopes));
}



private Predicate<String> apiPaths() {
return or(regex("/api/v1.*")
);

}

}

关于swagger - 如何在 Spring Boot 应用程序的 Swagger API 中提供身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51883118/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com