As per the Open API 3.0.0 documentation bearer config does not work. https://swagger.io/docs/specification/authentication/bearer-authentication/
we use spring boot 2.7.2 and springdoc-openapi-ui 1.6.8. And for option 1 and option 2 we didn't change any other configurations or dependencies.
Option 1 : Open API yml config - does not work (i.e. No "Authorize" button in Swagger web page)
openapi: 3.0.0
info:
version: 1.0.0
title: Swagger API
security:
- bearerAuth: []
paths:
/api/swagger/users:
get:
summary: To get all users from the Swagger service
tags:
- Swagger
description: >-
getUsers REST API endpoint will fetch all the users from the Swagger Service.
operationId: getUsers
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/UserDTO'
components:
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: JWT
schemas:
UserDTO:
properties:
customUserId:
type: integer
format: int64
example: 10
userLoginId:
type: string
example: [email protected]
isActive:
type: boolean
example: true
firstName:
type: string
example: abc
lastName:
type: string
example: xyz
Option 2 : Overriding OpenApiCustomiser - does work
import org.springdoc.core.customizers.OpenApiCustomiser;
import org.springframework.stereotype.Component;
import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.security.SecurityRequirement;
import io.swagger.v3.oas.models.security.SecurityScheme;
@Component
public class AuthOpenApiCustomizer implements OpenApiCustomiser {
@Override
public void customise(OpenAPI openApi) {
var securitySchemeName = "bearerAuth";
openApi.getComponents().addSecuritySchemes(securitySchemeName, new SecurityScheme().type(SecurityScheme.Type.HTTP).scheme("bearer").bearerFormat("JWT"));
openApi.addSecurityItem(new SecurityRequirement().addList(securitySchemeName));
}
}
what configuration is missing in openapi.yml file or application.yml file because simply adding AuthOpenApiCustomizer class does show the "Authorize" button and working as expected?