認証方式が定義されていないOpenAPI 2.0ドキュメント

認証が必要なAPIでは、securityDefinitionsで認証方式を定義し、securityで適用します。

説明

OpenAPI 2.0のsecurityDefinitionsが存在しないか空の場合、ドキュメントには認証方式が定義されていません。認証を使用するAPIでは、実際の方式と必要な認証情報を明記してください。意図的に公開するAPIでは、認証の定義が不要な場合もあります。

想定される影響

認証の定義がないと、開発者やクライアント生成ツールが必要な認証情報を把握できません。仕様書の記載漏れだけで、サーバーにも認証がないとは判断できません。

対処方法

securityDefinitionsに実際の認証方式を定義し、API全体または個別の操作のsecurityから参照してください。方式を定義するだけでは認証要件は適用されません。サーバー側でも要件を適用してください。

例

次の例ではApiKeyAuthを定義し、API全体で必要となるように指定します。

変更前

json
{
  "swagger": "2.0",
  "info": {
    "title": "Simple API Overview",
    "version": "1.0.0"
  },
  "paths": {
    "/": {
      "get": {
        "summary": "List API versions",
        "responses": {
          "200": {
            "description": "ok"
          }
        }
      }
    }
  },
  "securityDefinitions": {}
}

変更後

json
{
  "swagger": "2.0",
  "info": {
    "title": "Simple API Overview",
    "version": "1.0.0"
  },
  "paths": {
    "/": {
      "get": {
        "summary": "List API versions",
        "responses": {
          "200": {
            "description": "ok"
          }
        }
      }
    }
  },
  "securityDefinitions": {
    "ApiKeyAuth": {
      "type": "apiKey",
      "in": "header",
      "name": "X-API-Key"
    }
  },
  "security": [
    {
      "ApiKeyAuth": []
    }
  ]
}

参考資料