如何在Swagger中自动检索授权令牌?

时间:2018-02-13 22:44:58

标签: java swagger swagger-ui

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

在我的data = [ (1, ['w1','w2','w3']), (2, ['w3','w4']) ] df = sqlCtx.createDataFrame(data, ["ID", "Words"]) df.show() #+---+------------+ #| ID| Words| #+---+------------+ #| 1|[w1, w2, w3]| #| 2| [w3, w4]| #+---+------------+ 文件中,我有以下内容:

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"); } 按钮,我可以点击:

Swagger authorization button

我可以在此处粘贴令牌:

Swagger authorization api key dialog box

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

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

我可能会提取Swagger HTML / JS并修改Authorize页面或JavaScript以自动调用API并使用令牌填充对话框,但这种方法的缺点是Swagger可以'如果我直接修改这些文件,我很容易更新。

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

1 个答案:

答案 0 :(得分:2)

您可以在配置类中尝试

@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()));
    }
}