从SpringFox转换后向Openapi添加安全性

7d7tgy0s  于 2023-03-02  发布在  Spring
关注(0)|答案(2)|浏览(170)

我正在从SpringFox转换到springdoc openapi。我不知道如何获得授权。
我在config类中添加了这些注解

@Configuration
@OpenAPIDefinition(info = @Info(title = "My API", version = "v1"))
@SecurityScheme(
        name = "Authorization",
        type = SecuritySchemeType.APIKEY,
        in = SecuritySchemeIn.HEADER
)

我收到授权提示,可以输入密钥,但当我单击 Try It Now-〉Execute 时,未发送授权标头

是否需要一些附加注解来启用此功能?

b1uwtaje

b1uwtaje1#

我找到了我遗漏的部分。我以前没有发布我的OpenAPI定义,但是我需要添加security字段。

@Bean
public OpenAPI nexusOpenApi() {
    return new OpenAPI()
            .info(new Info().title(getTitle())
                    .description(getDescription())
                    .version(getVersion())
                    .license(new License().name("(C) Copyright xxx").url("http://www.example.com")))
            .security(Collections.singletonList(new SecurityRequirement().addList("Authorization")))
            .externalDocs(new ExternalDocumentation());
    }

名称AuthorizationSecurityScheme注解中指定的名称匹配

46qrfjad

46qrfjad2#

希望这对其他人有所帮助,这就是在您的项目中包含springdoc-openapi-ui的依赖项之后的全部内容。
例如,您可以创建一个Configuration类SwaggerConfig.java,但您不必这样做,只要您定义一个返回OpenAPI对象的bean即可:

@Configuration
public class SwaggerConfig {
    @Bean
    public OpenAPI springOpenApiConfig() {
         return new OpenAPI()
            .components(new Components()
                        .addSecuritySchemes("api_key", new SecurityScheme()
                                  .type(SecurityScheme.Type.APIKEY)
                                  .description("Api Key access")
                                  .in(SecurityScheme.In.HEADER)
                                  .name("X-API-Key")
              )          )
              .security(Arrays.asList(
                           new SecurityRequirement().addList("api_key")))
              // whatever else you need
              .info(new Info().title("Your project name")
              .description("Hello")
              .version("v1")
      }
}

在本例中,它使用了“X-API-Key”头,因此您可能需要根据应用程序所需的头名称进行更改。

相关问题