【问题标题】:How to automatically retrieve an authorization token in Swagger?如何在 Swagger 中自动检索授权令牌?
【发布时间】:2018-08-01 13:52:41
【问题描述】:

为了工作,我正在开发一个 Java 项目,我们需要将授权令牌传递给每个请求标头。

在我的SwaggerConfig.java 文件中,我有以下内容:

@Override
public Docket createDocket() {
    return new Docket(DocumentationType.SWAGGER_2)
            .apiInfo(getApiInfo())
            ...
            .build()
            .securitySchemes(Arrays.asList(apiKey()));
}

private ApiKey apiKey() {
    return new ApiKey("Authorization", "api_key", "header");
}

这会启用一个我可以单击的Authorize 按钮:

我可以在这里粘贴令牌:

...将令牌插入到每个请求的标头中。

但是,Swagger Docs 中不存在任何文档或其他地方关于如何自动插入身份验证令牌的示例。目标是通过调用内部 API(使用活动目录进行身份验证)来检索身份验证令牌,并自动将该令牌应用于请求标头。

我可能会提取 Swagger HTML/JS 并修改 swagger-ui.html 页面或 JavaScript 以自动调用 API 并用令牌填充对话框,但这种方法的缺点是 Swagger 不能轻易更新如果我直接修改那些文件。

是否有 Java 方法可以将自定义 API 密钥插入请求标头?

【问题讨论】:

标签: java swagger swagger-ui


【解决方案1】:

你可以在你的配置类中试试这个

@Configuration
@EnableSwagger2
public class SwaggerConfig {                                    

    private ApiKey apiKey() {
        return new ApiKey("apiKey", "Authorization", "header");
    }

    @Bean
    public Docket api(HttpServletRequest httpReq) {
        return new Docket(DocumentationType.SWAGGER_2).select()
                .apis(RequestHandlerSelectors.any())
                .paths(PathSelectors.any())
                .build()
                 .securitySchemes(Arrays.asList(apiKey()));
    }
}

【讨论】:

    猜你喜欢
    • 2019-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-03
    • 2014-02-07
    • 2020-05-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多