未定義の認証方式を参照するOpenAPI 2.0ドキュメント

securityの認証方式名はsecurityDefinitionsの定義と一致させる必要があります。

説明

OpenAPI 2.0のsecurityで使用する認証方式名は、securityDefinitionsに定義されている必要があります。未定義の名前を参照すると、必要な認証方式や認証情報を仕様書から確認できません。

想定される影響

無効な参照によって仕様の検証やクライアントの生成に失敗したり、開発者が認証要件を誤解したりするおそれがあります。

対処方法

参照先を実際の定義と一致させ、OAuth2を使用する場合は必要なスコープも定義してください。認証要件を単に削除するのではなく、サーバーの実際のポリシーに合わせて修正してください。

例

変更前の例ではpetstore_authが未定義です。変更後はこの方式とスコープを定義しています。例のOAuth2 URLは、実際の認証プロバイダーのURLに置き換えてください。

変更前

json
{
  "swagger": "2.0",
  "paths": {
    "/": {
      "get": {
        "responses": {
          "200": {
            "description": "ok"
          }
        }
      }
    }
  },
  "security": [
    {
      "petstore_auth": [
        "write:pets",
        "read:pets"
      ]
    }
  ],
  "securityDefinitions": {
    "api_key": {
      "type": "apiKey",
      "name": "api_key",
      "in": "header"
    }
  },
  "info": {
    "title": "Simple API overview",
    "version": "1.0.0"
  }
}

変更後

json
{
  "swagger": "2.0",
  "paths": {
    "/": {
      "get": {
        "responses": {
          "200": {
            "description": "ok"
          }
        }
      }
    }
  },
  "security": [
    {
      "petstore_auth": [
        "write:pets",
        "read:pets"
      ]
    }
  ],
  "securityDefinitions": {
    "petstore_auth": {
      "type": "oauth2",
      "flow": "accessCode",
      "authorizationUrl": "https://example.com/oauth/authorize",
      "tokenUrl": "https://example.com/oauth/token",
      "scopes": {
        "write:pets": "modify pets in your account",
        "read:pets": "read your pets"
      }
    }
  },
  "info": {
    "title": "Simple API overview",
    "version": "1.0.0"
  }
}

参考資料