2015-10-30 55 views
9

我是Swagger的新手。Swagger UI將身份驗證令牌傳遞到API調用頭中

我使用Swagger UI來生成swagger文檔。我有兩個API調用。首先調用是基於用戶名和密碼生成令牌。第二次調用需要首次調用生成的令牌。

如何使用Swagger UI爲第二次調用設置該令牌?

+1

會試着讓你知道 –

回答

16

@ApiImplicitParams@ApiImplicitParam將這樣的伎倆:

@GET 
@Produces("application/json") 
@ApiImplicitParams({ 
    @ApiImplicitParam(name = "Authorization", value = "Authorization token", 
        required = true, dataType = "string", paramType = "header") 
}) 
public String getUser(@PathParam("username") String userName) { 
    ... 
} 

更多here

Swagger UI將被更新,以便您可以從那裏發送令牌。不需要更改HTML。


注:前一段,記錄與揚鞭一個REST API的時候,我才意識到,僅僅增加@ApiImplicitParam是不夠的(即使你只有一個參數)。無論如何,您還必須添加@ApiImplicitParams

+0

如何通過添加參數(如用戶名,密碼和授權類型)從POST/oauth/token獲取令牌?因爲在swagger UI中只有參數節點列出瞭如何在那裏添加自定義參數? –

1

你將不得不自定義swagger index page來完成我相信。

您可以隱藏輸入'input_apiKey'併爲用戶名和密碼添加兩個輸入。然後你做一個ajax調用來用你的令牌更新隱藏的輸入。

1

這是一個老問題,但是這是我如何與2.7.0版本對我的智威湯遜最近解決了它令牌

在你招搖的配置,下面添加SecurityConfiguration豆。重要的部分是將第五個參數留空或爲空。

@Bean 
    public SecurityConfiguration securityInfo() { 
     return new SecurityConfiguration(null, null, null, null, "", ApiKeyVehicle.HEADER,"Authorization",""); 
    } 

添加securitySchemes(Lists.newArrayList(apiKey()))到主Docket豆。

@Bean 
    public Docket docket() 
    { 
     return new Docket(DocumentationType.SWAGGER_2).select() 
      .....build().apiInfo(...).securitySchemes(Lists.newArrayList(apiKey())); 
    } 


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

然後在UI,你需要點擊授權按鈕並輸入「承載的access_token」(授權文本框),其中的access_token是由令牌JWT令牌服務器提供。

保存此授權後,該授權將對所有終端生效。爲每個端點添加單獨的文本字段看起來非常麻煩。