OpenAPI 2.0でOAuth2暗黙的フローを定義

OAuth2暗黙的フローは、認可応答でアクセストークンを直接返します。

説明

OpenAPI 2.0のflow: implicitは、認可応答でアクセストークンを直接返すOAuth2フローを定義します。トークンの漏えいや注入の危険があるため、新しい実装ではPKCEを使う認可コードフローが推奨されます。

想定される影響

リダイレクト中にトークンが漏えいしたり、攻撃者が注入したトークンをクライアントが受け入れたりすると、意図しないアクセスやアカウントの関連付けにつながるおそれがあります。

対処方法

認可サーバーとクライアントをPKCE付きの認可コードフローに移行し、仕様をflow: accessCodeに更新してください。authorizationUrlとtokenUrlには、実際のプロバイダーのHTTPS URLを指定してください。仕様書の変更だけでは、実際のフローは変わりません。

例

次の例ではoauth2の定義を認可コードフローに変更します。PKCEはクライアントと認可サーバーで設定してください。

変更前

json
{
  "securityDefinitions": {
    "oauth2": {
      "type": "oauth2",
      "flow": "implicit",
      "authorizationUrl": "https://api.example.com/oauth/authorize",
      "scopes": {}
    }
  }
}

変更後

json
{
  "securityDefinitions": {
    "oauth2": {
      "type": "oauth2",
      "flow": "accessCode",
      "authorizationUrl": "https://api.example.com/oauth/authorize",
      "tokenUrl": "https://api.example.com/oauth/token",
      "scopes": {}
    }
  }
}

参考資料