2016-05-02 16 views
3

Swashbuckle(.net用swagger)を使用してWebAPIプロジェクトでAPIキーベースの認証を行いたい。私は以下のようにswashbuckleを設定しているスワッシュバックル付きヘッダーのAPIキー

:(https://github.com/domaindrivendev/Swashbuckle#describing-securityauthorization-schemesを参照)

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

    }) 
    .EnableSwaggerUi(); 

を私が期待して闊歩ファイルを作成するために表示されます。

 
    "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

これは私のために働いた。スワッガーの設定を調整するときは、(IISをフルに使用している場合は) 'iisreset'コマンドを実行してください。設定がキャッシュされることがあり、変更が表示されません。 –

2

あなたは(hereを説明したように)originalに基づいてカスタムのindex.htmlを注入し、機能addApiKeyAuthorizationに次の行を変更する必要があります:

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

これは解決策として失敗しますが、それを行う唯一の方法のように思えます:( –