2016-05-25 2 views
15

C#で多くのAPIを記述し、Swashbuckleを使用して「Swagger」ドキュメンテーションWebサイトを作成しました。ハードコーディングApi Swagger Generatedクライアントを使用する場合のヘッダーのキー値

RESTコールの認証では、ヘッダーにAPIキーを使用します。

私はここに記載されているように任意のプログラミング言語のために特定のクライアントをダウンロードすることを可能にするページを作成しました:彼はする必要はありませんので、私は自分のAPIキーを使用してクライアントを生成するためにユーザを有効にしたいと思いますhttps://generator.swagger.io

を手動でコード内にAPIキーを設定してください。

私は、このセキュリティ定義持っている私の闊歩JSONで

:私はクライアントのオプションを設定することが、私はどのように(と場合)を見つけることができません許可このモデルAPIを発見したSWAGGERクライアントジェネレータのページで

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

をキーは、クライアントコードでハードコード(または他の種類の許可)することができます。

GeneratorInput { 
    spec (object, optional), 
    options (object, optional), 
    swaggerUrl (string, optional), 
    authorizationValue (AuthorizationValue, optional), 
    securityDefinition (SecuritySchemeDefinition, optional) 
} 
AuthorizationValue { 
    value (string, optional), 
    type (string, optional), 
    keyName (string, optional) 
} 
SecuritySchemeDefinition { 
    description (string, optional), 
    type (string, optional) 
} 

私はAuthorizationValueオブジェクトを設定する必要がありますが、それに関するドキュメントがない(または見つからない)とします。

生成されたクライアントlibにすべての要求に任意のHTTPヘッダーを追加させることができれば十分です。

X-ApiKey:{whatever the key is} 

誰もがアイデアを持っています?私達はちょうどそれが追加可能性があり、その場合には

多くのありがとうございます!

+0

を、私はしましたレジストリに保存されているキーを手動で変更し、レジストリキーのセキュリティを手動で変更して、読み取り専用のタスク/プロセスを実行しているユーザーのみがアクセスできるようにしました。その後、C#プログラムはレジストリキーを読み取るだけで、マシン上の他の人(管理者アクセスなし)はキーを読み取ることができなくなります。弾丸ではありませんが、単純なケースでは機能します。 –

+0

@DavidThomas提案していただきありがとうございますが、正直なところ(広範なコメントにもかかわらず!)これは私たちのセキュリティ上の懸念事項ではありません。クライアントライブラリは、キーにアクセスするユーザーの集合の外では共有されません。 –

答えて

1

単にデフォルト値を持つ各呼び出しのパラメータとして追加するために動作するようです - ので、JSONはこのようなものだろう:Windowsの世界では、過去に

"post": { 
       "tags": [ "user" ], 
       "summary": "Creates list of users with given input array", 
       "description": "", 
       "operationId": "createUsersWithListInput", 
       "produces": [ "application/xml", "application/json" ], 
       "parameters": [ 
        { 
         "in": "body", 
         "name": "body", 
         "description": "List of user object", 
         "required": true, 
         "schema": { 
          "type": "array", 
          "items": { "$ref": "#/definitions/User" } 
         } 
        }, 
        { 
         "in": "header", 
         "name": "X-ApiKey", 
         "required": false, 
         "type": "string", 
         "format": "string", 
         "default": "abcdef12345" 
        } 
       ], 
       "responses": { "default": { "description": "successful operation" } } 
      } 
+0

これは、スワッガー定義ファイルの改訂案ですか? APIキーはスワッガー定義ファイル自体にありますか?問題は、[コード生成ツール](https://generator.swagger.io/)を使用して生成されたクライアントライブラリにハードコードする方法に関するものです。 –

関連する問題