全体のsecurity配列が空

全体のsecurity配列が空の場合、既定の認証要件はありません。

説明

最上位の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"
      }
    }
  }
}

参考資料