2016-05-02 95 views
3

我想用Swashbuckle(爲.net開口)在WebAPI項目上進行基於API密鑰的身份驗證。swashbuckle頭部的API密鑰

我已經配置swashbuckle如下:

config 
    .EnableSwagger(c => 
    { 
     c.ApiKey("apiKey") 
      .Description("API Key Authentication") 
      .Name("X-ApiKey") 
      .In("header"); 
     c.SingleApiVersion("v1", "My API"); 

    }) 
    .EnableSwaggerUi(); 

(見https://github.com/domaindrivendev/Swashbuckle#describing-securityauthorization-schemes

這似乎創造招搖文件我想到:

 
    "securityDefinitions": { 
     "apiKey": { 
     "type": "apiKey", 
     "description": "API Key Authentication", 
     "name": "X-ApiKey", 
     "in": "header" 
     } 
    } 

但是,當我去到UI和'試一試'它試圖將API密鑰放入查詢字符串(我認爲是默認行爲)而不是頭部。

如:

curl -X POST --header 'Accept: application/json' 'http://localhost:63563/api/MyMethod?api_key=key'

怎樣才能昂首闊步使用把API密鑰的頭而不是查詢字符串?

回答

8

檢查出來:

config 
    .EnableSwagger(c => 
    { 
     c.ApiKey("apiKey") 
      .Description("API Key Authentication") 
      .Name("X-ApiKey") 
      .In("header"); 
     c.SingleApiVersion("v1", "My API"); 

    }) 
    .EnableSwaggerUi(c => { 
     c.EnableApiKeySupport("X-ApiKey", "header"); 
    }) 
+0

看起來更好的生病下週嘗試它的歡呼。 –

+0

它只是工作,它的好得多 –

+0

這對我有用。調整swagger配置設置時,請確保運行'iisreset'命令(如果使用的是完整的IIS)。配置有時會被緩存,並且您不會看到更改。 –

2

你必須注入(如描述here)的基礎上original定製index.html,然後更改以下行的功能addApiKeyAuthorization

var apiKeyAuth = new SwaggerClient.ApiKeyAuthorization("X-ApiKey", key, "header"); 
+0

這很吸引人的解決方案,但它似乎是唯一的方法來做到這一點:( –