如何在 java EE 应用程序中将授权按钮添加到 swagger-ui

How adding Authorize Button to swagger-ui in java EE application

我有一个 java EE 应用程序,我想添加 swagger-ui 来记录我的 java REST API.
我的 Swagger-ui 它可以工作,但我想在我的 java EE 应用程序
中将授权按钮添加到 swagger-ui 谢谢你

这是我的pom.xml

<dependency>
    <groupId>javax.ws.rs</groupId>
    <artifactId>javax.ws.rs-api</artifactId>
    <version>2.1.1</version>
</dependency>
  
  <!-- https://mvnrepository.com/artifact/io.swagger/swagger-jaxrs -->
<dependency>
    <groupId>io.swagger</groupId>
    <artifactId>swagger-jaxrs</artifactId>
    <version>1.6.1</version>
</dependency>
  </dependencies>

Application.java

@ApplicationPath("api")
public class Aplicacion extends Application{
    
    public Aplicacion() {

        BeanConfig beanConfig = new BeanConfig();
        beanConfig.setVersion("1.0.0");
        beanConfig.setTitle("TJaxRs Swagger");
        beanConfig.setBasePath("/JaxRs/api");
        beanConfig.setResourcePackage("org.api.recursos");
        beanConfig.setScan(true);
    }

}

我强烈推荐 OpenAPI 规范,以便在第一步理解 API 定义细节。 https://swagger.io/docs/specification/authentication/. Then, Swagger Core Jersey's Github page might be the right address https://github.com/swagger-api/swagger-core/wiki/Swagger-Core-Jersey-2.X-Project-Setup-1.5#using-a-servlet.

为了快速找到答案,我将解释“授权”按钮出现在右上角的时间和原因。请通过 https://editor.swagger.io 查看默认的 Swagger 宠物示例。您将在端点定义之后立即看到 securityDefinitions。通过这个,我们可以定义安全标准。就像软件中的变量声明。

securityDefinitions:
  petstore_auth:
    type: "oauth2"
    authorizationUrl: "http://petstore.swagger.io/oauth/dialog"
    flow: "implicit"
    scopes:
      write:pets: "modify pets in your account"
      read:pets: "read your pets"
  api_key:
    type: "apiKey"
    name: "api_key"
    in: "header"

那是救不了我们的,我们必须 link 用 API 定义安全选项。在 API 中,您可以放置​​为指定的 API.

启用的已定义安全选项
  responses:
    "200":
      description: "successful operation"
      schema:
        $ref: "#/definitions/ApiResponse"
  security:
  - petstore_auth:
    - "write:pets"
    - "read:pets"

在 Java 站点中,bean 配置将提供修改生成的 Swagger 内容的机会。那将是像下面这样的东西。希望您能从中受益。

BeanConfig swaggerConfigBean = new BeanConfig();
swaggerConfigBean.setConfigId(CONFIG_ID);
swaggerConfigBean.setTitle(TITLE);
swaggerConfigBean.setContact(CONTRACT);
swaggerConfigBean.setSchemes(new String[]{"http", "https"});
swaggerConfigBean.setResourcePackage(yourPackage);
swaggerConfigBean.setVersion(VERSION);
swaggerConfigBean.setBasePath(BASE_PATH);
swaggerConfigBean.setPrettyPrint(true);
swaggerConfigBean.setScan(true);

Swagger swagger = swaggerConfigBean.getSwagger();
swagger.addSecurityDefinition(SECURITY_DEF_FOR_API_KEY, new ApiKeyAuthDefinition(X_HEADER_API_KEY,
        In.HEADER));