API キー
一部のAPIでは、認証にAPIキーを使用します。APIキーは、クライアントがAPI呼び出しを行う際に提供する必要がある特別なトークンです。キーは通常、リクエストヘッダーとして送信されます。
1GET /something HTTP/1.12X-API-Key: abcdef12345
またはクエリパラメータとして
1GET /something?api_key=abcdef12345
APIキーはクライアントとサーバーのみが知る秘密であるとされています。しかし、基本的な認証と同様に、APIキーベースの認証は、HTTPS/SSLなどの他のセキュリティメカニズムと併用しない限り、安全とは見なされません。
APIキーベースのセキュリティを定義するには
- グローバルな
securityDefinitions
セクションにtype: apiKey
のエントリを追加します。エントリ名は任意(下記の例では*APIKeyHeader*)であり、仕様の他の部分からこのセキュリティ定義を参照するために使用されます。 - APIキーが
in: header
で渡されるか、in: query
で渡されるかを指定します。 - そのパラメーターまたはヘッダーの
name
を指定します。
1securityDefinitions:2 # X-API-Key: abcdef123453 APIKeyHeader:4 type: apiKey5 in: header6 name: X-API-Key7 # /path?api_key=abcdef123458 APIKeyQueryParam:9 type: apiKey10 in: query11 name: api_key
次に、ルートレベルまたは操作レベルのsecurity
セクションを使用して、APIキーをAPI全体または特定の操作に適用します。
1# Global security (applies to all operations):2security:3 - APIKeyHeader: []4paths:5 /something:6 get:7 # Operation-specific security:8 security:9 - APIKeyQueryParam: []10 responses:11 200:12 description: OK (successfully authenticated)
APIで複数の認証タイプをサポートできることに注意してください。複数の認証タイプを使用するを参照してください。
APIキーのペア
一部のAPIでは、APIキーとアプリIDなどのセキュリティキーのペアを使用します。キーが一緒に(論理ANDとして)使用されることを指定するには、security
配列の同じ配列項目にそれらをリストします
1securityDefinitions:2 apiKey:3 type: apiKey4 in: header5 name: X-API-KEY6 appId:7 type: apiKey8 in: header9 name: X-APP-ID10security:11 - apiKey: []12 appId: []
との違いに注意してください。
1security:2 - apiKey: []3 - appId: []
これは、いずれかのキーを使用できることを意味します(論理ORとして)。その他の例については、複数の認証タイプを使用するを参照してください。
401レスポンス
また、APIキーが不足しているか無効なリクエストに対して返される401「Unauthorized」レスポンスを定義することもできます。このレスポンスには、言及したいWWW-Authenticate
ヘッダーが含まれます。他の一般的なレスポンスと同様に、401レスポンスはグローバルなresponses
セクションで定義し、複数の操作から参照できます。
1paths:2 /something:3 get:4 ...5 responses:6 ...7 401:8 $ref: '#/responses/UnauthorizedError'9 post:10 ...11 responses:12 ...13 401:14 $ref: '#/responses/UnauthorizedError'15responses:16 UnauthorizedError:17 description: API key is missing or invalid18 headers:19 WWW_Authenticate:20 type: string
お探しのものが見つかりませんでしたか? コミュニティに質問する
間違いを見つけましたか? お知らせください