OpenAPI 2.0のOAuth2トークンURLの誤り

tokenUrlにはOAuth2プロバイダーの正しいトークン発行先を指定する必要があります。

説明

OpenAPI 2.0のOAuth2認証定義では、tokenUrlがトークン発行先を示します。正しい形式でプロバイダーの実際のエンドポイントを指定し、トークンリクエストにはHTTPSを使用してください。

想定される影響

アドレスが誤っていると、トークンの発行に失敗する可能性があります。HTTPの使用や誤ったサーバーへの送信によって、認証情報やトークンが漏えいするおそれもあります。

対処方法

securityDefinitionsのtokenUrlに、プロバイダーの正式なトークンエンドポイントを設定してください。HTTPSを使用し、URLのフラグメント(#以降の部分)は含めないでください。クライアントが正しいサーバーに接続し、その証明書を検証することを確認してください。

例

変更前のURLはHTTPを使用し、トークンエンドポイントには認められないフラグメントを含んでいます。変更後は、プロバイダーのHTTPSのトークン発行先を使用します。

変更前

yaml
swagger: "2.0"
securityDefinitions:
  petstore_auth:
    type: oauth2
    flow: accessCode
    authorizationUrl: https://api.my.company.com/oauth/authorize
    tokenUrl: http://example.com#@evil.com/
    scopes:
      write:pets: modify pets
      read:pets: read pets

変更後

yaml
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:pets: modify pets
      read:pets: read pets

参考資料