OpenAPI 2.0の操作で使うBasic認証を確認

操作ごとのBasic認証について、通信の保護と認証情報の再利用リスクを確認してください。

説明

OpenAPI 2.0の操作のsecurityがBasic認証定義を参照すると、その操作にユーザー名とパスワードによる認証が指定されます。Basic認証自体には通信を暗号化する機能はありません。

想定される影響

HTTPSを使わずに送信した認証情報は、通信経路で漏えいするおそれがあります。盗まれたパスワードが有効な間は、攻撃者がそのアカウントの権限で再利用できる可能性があります。

対処方法

実際の操作の接続先にHTTPSと証明書検証を適用してください。権限委譲に移行する場合は、PKCEを使うOAuth2認可コードフローを設定し、操作のsecurityが定義済みのスコープを参照するようにしてください。必要な権限はサーバー側でも検証してください。

例

次の例では、GET /をOAuth2に移行し、要求するスコープを定義済みのwrite:apiとread:apiに合わせます。実際の操作に必要なスコープだけを使用してください。

変更前

json
{
  "swagger": "2.0",
  "paths": {
    "/": {
      "get": {
        "security": [
          {
            "oAuth2AuthCodeNeg2": []
          }
        ]
      }
    }
  },
  "securityDefinitions": {
    "oAuth2AuthCodeNeg2": {
      "type": "basic"
    }
  }
}

変更後

json
{
  "swagger": "2.0",
  "paths": {
    "/": {
      "get": {
        "security": [
          {
            "oAuth2AuthCodeNeg2": [
              "write:api",
              "read:api"
            ]
          }
        ]
      }
    }
  },
  "securityDefinitions": {
    "oAuth2AuthCodeNeg2": {
      "type": "oauth2",
      "flow": "accessCode",
      "authorizationUrl": "https://api.my.company.com/oauth/authorize",
      "tokenUrl": "https://api.my.company.com/oauth/token",
      "scopes": {
        "write:api": "modify apis in your account",
        "read:api": "read your apis"
      }
    }
  }
}

参考資料