【问题标题】:How adding Authorize Button to swagger-ui in java EE application如何在 Java EE 应用程序中将授权按钮添加到 swagger-ui
【发布时间】:2022-01-21 15:16:19
【问题描述】:

我有一个 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);
    }

}

【问题讨论】:

标签: java jax-rs swagger-ui java-ee-8


【解决方案1】:

我强烈推荐 OpenAPI 规范在第一步理解 API 定义细节。 https://swagger.io/docs/specification/authentication/。那么,Swagger Core Jersey 的 Github 页面可能是正确的地址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"

这并不能拯救我们,我们必须将定义的安全选项与 API 联系起来。在 API 中,您可以定义为指定 API 启用的安全选项。

  responses:
    "200":
      description: "successful operation"
      schema:
        $ref: "#/definitions/ApiResponse"
  security:
  - petstore_auth:
    - "write:pets"
    - "read:pets"

在 Java 站点中,bean config 将提供修改生成的 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));

【讨论】:

    猜你喜欢
    • 2021-08-21
    • 1970-01-01
    • 1970-01-01
    • 2020-09-13
    • 1970-01-01
    • 2015-09-12
    • 2022-07-11
    • 2018-12-13
    • 2015-12-19
    相关资源
    最近更新 更多