説明
最上位のsecurity: []は、APIの既定の認証要件がないことを示します。個別の操作ではこの設定を上書きできます。意図的に公開するAPIでは有効な設定ですが、共通の認証が必要なAPIには要件を指定してください。
想定される影響
保護すべき操作がこの既定値を使用すると、認証なしで呼び出せるものとして記載されます。仕様の宣言は、サーバーの実際の認証ポリシーと一致させる必要があります。
対処方法
共通の認証が必要な場合は、全体のsecurityから定義済みの認証方式を参照し、公開する操作だけを例外にしてください。security: []とsecurity: [{exampleSecurity: []}]は異なります。後者は指定した方式の認証を要求し、APIキー認証では空のスコープ配列が正しい形式です。
例
次の例では、認証不要の既定値をexampleSecurityによるAPIキー認証に変更します。
変更前
json
{
"openapi": "3.0.0",
"paths": {
"/": {
"get": {
"responses": {
"200": {
"description": "ok"
}
}
}
}
},
"security": [],
"info": {
"title": "Simple API overview",
"version": "1.0.0"
},
"components": {
"securitySchemes": {
"exampleSecurity": {
"type": "apiKey",
"in": "header",
"name": "X-API-Key"
}
}
}
}
変更後
json
{
"openapi": "3.0.0",
"paths": {
"/": {
"get": {
"responses": {
"200": {
"description": "ok"
}
}
}
}
},
"security": [
{
"exampleSecurity": []
}
],
"info": {
"title": "Simple API overview",
"version": "1.0.0"
},
"components": {
"securitySchemes": {
"exampleSecurity": {
"type": "apiKey",
"in": "header",
"name": "X-API-Key"
}
}
}
}