OpenAPIのHTTP Basic認証の保護設定を確認

HTTP Basic認証で使用する認証情報と通信を保護してください。

説明

OpenAPI 3.0のtype: httpとscheme: basicは、ユーザー名とパスワードを使うBasic認証を定義します。httpという分類はHTTPSを排除するものではありません。この認証を実際に使う接続には通信の保護が必要です。

想定される影響

HTTPSを使わないと、Base64でエンコードされた認証情報が漏えいするおそれがあります。盗まれたパスワードが有効な間は、そのアカウントの権限を悪用される可能性があります。

対処方法

HTTPSとサーバー証明書の検証を適用し、パスワードの漏えいを防いでください。ユーザーの権限委譲やトークンの有効期間の制限が必要なら、PKCEを使うOAuth2認可コードフローなどを検討してください。移行時は実際の認証処理とsecurityの参照を合わせて変更してください。

例

次の抜粋では、認証定義だけをOAuth2に変更します。必要なスコープ、security要件、実際のクライアントやサーバーは別途設定してください。

変更前

json
{
  "openapi": "3.0.0",
  "components": {
    "securitySchemes": {
      "petstore_auth": {
        "type": "http",
        "scheme": "basic"
      }
    }
  }
}

変更後

json
{
  "openapi": "3.0.0",
  "components": {
    "securitySchemes": {
      "petstore_auth": {
        "type": "oauth2",
        "flows": {
          "authorizationCode": {
            "authorizationUrl": "https://example.com/api/oauth/dialog",
            "tokenUrl": "https://example.com/api/oauth/token",
            "scopes": {
              "read:pets": "read your pets"
            }
          }
        }
      }
    }
  }
}

参考資料