我有一个使用Springdoc(Swagger)的Spring Boot API。该API具有在标头中传递“apiKey”和“code”字段的安全性。我很难正确配置Swagger以在Swagger UI中启用身份验证功能。这是配置:
@Bean
public OpenAPI alartaCoreAdtAPI() {
return new OpenAPI()
.addSecurityItem(new SecurityRequirement().addList("BASIC"))
.components(
new Components()
.addSecuritySchemes("BASIC",
new SecurityScheme()
.type(SecurityScheme.Type.HTTP)
.scheme("basic")
.name("code")
)
)
.info(new Info().title(config.getApiTitle())
.description(config.getApiDescription())
.version(config.getApiVersion())
.license(new
License().name(config.getApiLicenseTitle()).url(config.getApiLicenseUrl())))
);
}
我知道这是不正确的,但不确定如何配置它。
感谢任何帮助。
尝试解决方案:从@indybee推荐:
@Bean
public OpenAPI alartaCoreAdtAPI() {
return new OpenAPI()
.addSecurityItem(new SecurityRequirement().addList("BASIC"))
.components( new Components()
.addSecuritySchemes("apiKey", securityScheme("apiKey"))
.addSecuritySchemes("code", securityScheme("code"))
)
.info(new Info().title(config.getApiTitle())
.description(config.getApiDescription())
.version(config.getApiVersion())
.license(new License().name(config.getApiLicenseTitle()).url(config.getApiLicenseUrl())))
);
}
private SecurityScheme securityScheme(String name) {
return new io.swagger.v3.oas.models.security.SecurityScheme()
.type(io.swagger.v3.oas.models.security.SecurityScheme.Type.APIKEY)
.in(io.swagger.v3.oas.models.security.SecurityScheme.In.HEADER)
.name(name);
}
这就是我要做的(不幸的是,当我测试一个endpoint时,它仍然没有授权)
最后,这似乎有效(使用@indybee的指导):
addSecurityItem()
.components( new Components()
.addSecuritySchemes("apiKey", securityScheme("apiKey"))
.addSecuritySchemes("code", securityScheme("code"))
)
.addSecurityItem(new SecurityRequirement().addList("apiKey").addList("code"))
为每个请求传递2个自定义标头“apiKey”和“code”
添加此方法:
private SecurityScheme securityScheme(String name) {
return new io.swagger.v3.oas.models.security.SecurityScheme()
.type(io.swagger.v3.oas.models.security.SecurityScheme.Type.APIKEY)
.in(io.swagger.v3.oas.models.security.SecurityScheme.In.HEADER)
.name(name);
}
并用以下内容替换您的。组件()块
.components(new Components()
.addSecuritySchemes("apiKey", securityScheme("apiKey"))
.addSecuritySchemes("code", securityScheme("code"))
)
pom.xml Spring Security配置 application-local.yml 我得到这个结果。 无法呈现此定义提供的定义未指定有效的版本字段。 请注明有效的或版本字段。支持的版本字段是swagger: 2.0和与openapi: 3.0. n匹配的版本字段(例如,openapi: 3.0.0)。
如何覆盖微服务项目中的Jhipster swagger配置以更改后端的 /api路径并相应地更新网关Swagger UI?
我正在使用Swagger创建一个文档页面,我想自动添加从正确的调用中收到的访问令牌。我试着用它 接收和存储令牌,以及 但是,要通过标头将其传递到后续请求,这只适用于一次调用,之后令牌将恢复为<code>null</code>。 如何防止值被还原?
有没有办法绕过授权?
我试图在我的微服务项目中生成一个单独的招摇过市,在Api网关中将所有服务招摇过市聚合成一个单独的招摇过市。为了实现这一点,我将遵循下一个教程https://objectpartners.com/2017/09/28/aggregate-services-into-a-single-swagger 这里的问题是,当我尝试设置绝对URL时,我收到的输出是未能加载API定义。未定义的http://loc
我使用Springfox从Spring Boot REST控制器生成了Swagger API规范。 我注意到一个问题,示例值/模型无法显示响应。 作为调查,我在http://localhost:8080/v2/api-文档,并在https://editor.swagger.io/,它也无法显示示例值/模型。这似乎是由于模式没有正确引用模型对象(“Car”)造成的。 但是从Swagger的API文档