従来の OAuth セキュリティスキームの確認

従来の OAuth のサポート状況と、API が実際に使う認証フローを確認してください。

説明

OpenAPI 3.0 の type: http と scheme: oauth は、従来の OAuth 認証方式を記述します。新しい連携や移行を計画する際は、認可サーバーとクライアントのサポート状況を確認してください。この宣言だけで認証の脆弱性があると判断したり、OAuth2 への移行が完了したと考えたりすることはできません。

想定される影響

  • サポートされない認証方式は、新しいクライアントやゲートウェイとの連携、保守を難しくすることがあります。
  • 文書と実装のフローが異なると、クライアントが認証情報を誤った方法で送信したり、認証に失敗したりする可能性があります。

対処方法

サポートされる OAuth2 フローを選び、認可サーバー、クライアント、API を合わせて移行してください。認可コードフローには PKCE などの現在の推奨対策を適用し、HTTPS、リダイレクト URI、必要なスコープを確認してください。動作を検証してから OpenAPI のセキュリティスキームと security 要件に反映してください。

例

以下はセキュリティスキーム定義の抜粋です。エンドポイントとスコープを実際のサービスに合わせ、各操作に適用する security 要件は別途指定してください。

変更前

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

変更後

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"
            }
          }
        }
      }
    }
  }
}

変更後の例は OAuth2 の認可コードフローを記述しています。この定義だけで PKCE やサーバー側のトークン検証が設定されるわけではありません。

参考資料