OpenAPI 3.0の操作で使うBasic認証の通信保護を確認

Basic認証を使う操作が、実際にHTTPSで接続することを確認してください。

説明

OpenAPI 3.0の操作でBasic認証を使うと、認証情報をBase64でエンコードして送信します。この値自体は暗号化されていないため、HTTPSで通信を保護する必要があります。Basic認証の設定だけで、HTTP接続だと判断することはできません。

想定される影響

Basic認証情報をHTTPで送信すると、通信経路上でパスワードを読み取られたり、再利用されたりするおそれがあります。

対処方法

実際の操作の接続先と通信にHTTPSを設定し、証明書を検証してください。ユーザーの権限委譲のためにOAuth2へ移行する場合は、PKCEを使う認可コードフローを採用し、サーバー側のトークン・権限検証とクライアントを合わせて変更してください。トークン認証にもHTTPSが必要です。

例

次の例では、操作の接続をHTTPからHTTPSに変更し、認証要件をBasicからOAuth2に切り替えます。仕様書と合わせて実際のサーバーやクライアントも設定してください。

変更前

json
{
  "openapi": "3.0.0",
  "components": {
    "securitySchemes": {
      "regularSecurity": {
        "type": "http",
        "scheme": "basic"
      }
    }
  },
  "paths": {
    "/": {
      "get": {
        "servers": [
          {
            "url": "http://myapi.com/"
          }
        ],
        "security": [
          {
            "regularSecurity": []
          }
        ]
      }
    }
  }
}

変更後

json
{
  "openapi": "3.0.0",
  "components": {
    "securitySchemes": {
      "OAuth2": {
        "type": "oauth2",
        "flows": {
          "authorizationCode": {
            "authorizationUrl": "https://myapi.com/oauth/authorize",
            "tokenUrl": "https://myapi.com/oauth/token",
            "scopes": {
              "write": "modify objects",
              "read": "read objects"
            }
          }
        }
      }
    }
  },
  "paths": {
    "/": {
      "get": {
        "servers": [
          {
            "url": "https://myapi.com/"
          }
        ],
        "security": [
          {
            "OAuth2": [
              "write",
              "read"
            ]
          }
        ]
      }
    }
  }
}

参考資料