OpenAPI 2.0のBasic認証定義を確認

Basic認証定義の使用箇所と、認証情報の保護方法を確認してください。

説明

OpenAPI 2.0のsecurityDefinitionsにtype: basicを指定すると、再利用できるBasic認証方式を定義できます。定義だけではすべての操作に適用されず、全体または操作ごとのsecurityから参照する必要があります。

想定される影響

Basic認証はユーザー名とパスワードをBase64でエンコードして送信します。エンコードは暗号化ではないため、HTTPSなしでは認証情報が漏えいするおそれがあり、盗まれたパスワードは再利用される可能性があります。

対処方法

Basic認証を使う接続には、HTTPSとサーバー証明書の検証を適用してください。ユーザーの権限委譲が必要なAPIでは、PKCEを使うOAuth2認可コードフローなどを検討し、移行時に実際のクライアント、サーバー、securityの参照を合わせて変更してください。

例

次の例では、認証方式の名前を保持してOAuth2に変更します。使用箇所のsecurity参照と実際の認可サーバーは別途設定してください。

変更前

json
{
  "swagger": "2.0",
  "securityDefinitions": {
    "petstore_auth": {
      "type": "basic",
      "description": "Basic authentication"
    }
  }
}

変更後

json
{
  "swagger": "2.0",
  "securityDefinitions": {
    "petstore_auth": {
      "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"
      }
    }
  }
}

参考資料