認証要件が宣言されていないOpenAPIの操作

保護が必要な操作には、全体または操作ごとのsecurityで認証要件を指定します。

説明

個別の操作にも最上位のドキュメントにもsecurityがない場合、その操作には仕様上の認証要件がありません。意図的に公開する操作には適切な場合もありますが、認証が必要な操作では要件を明示してください。

想定される影響

仕様書を利用する開発者やクライアント生成ツールが、認証情報なしで呼び出す処理を実装するおそれがあります。サーバーが実際に認証を適用しているかは、別途確認する必要があります。

対処方法

実際の認証方式を定義し、全体または該当する操作のsecurityから参照してください。公開する操作と保護する操作を区別し、仕様書とサーバーのポリシーを一致させてください。

例

次の例ではexampleSecurityというAPIキー認証を定義し、全体のsecurityを通じて操作に適用します。

変更前

json
{
  "openapi": "3.0.0",
  "info": {
    "title": "Simple API overview",
    "version": "1.0.0"
  },
  "paths": {
    "/": {
      "get": {
        "responses": {
          "200": {
            "description": "ok"
          }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "exampleSecurity": {
        "type": "apiKey",
        "in": "header",
        "name": "X-API-Key"
      }
    }
  }
}

変更後

json
{
  "openapi": "3.0.0",
  "info": {
    "title": "Simple API overview",
    "version": "1.0.0"
  },
  "paths": {
    "/": {
      "get": {
        "responses": {
          "200": {
            "description": "ok"
          }
        }
      }
    }
  },
  "security": [
    {
      "exampleSecurity": []
    }
  ],
  "components": {
    "securitySchemes": {
      "exampleSecurity": {
        "type": "apiKey",
        "in": "header",
        "name": "X-API-Key"
      }
    }
  }
}

参考資料