説明
OpenAPI 2.0の全体のsecurityがpasswordフローを参照すると、APIの既定の認証方式として、クライアントがユーザーのパスワードを受け取って送信する構成になります。OAuthのセキュリティ指針であるRFC 9700は、このフローの使用を禁止しています。
想定される影響
クライアントの侵害や認証情報の不適切な処理によって、ユーザーのパスワードが漏えいするおそれがあります。複数段階のユーザー操作を必要とするMFAなどの認証にも適していません。
対処方法
ユーザーが操作する認可には、PKCEを使う認可コードフローへ移行してください。OpenAPI 2.0ではflow: accessCodeとHTTPSの認可・トークンURLを指定します。実際のクライアントと認可サーバーを合わせて変更してから、パスワードフローを無効にしてください。
例
次の例では全体のoauth2要件を保ったままフローを変更します。URLを実際のプロバイダーのものに置き換え、PKCEはクライアントと認可サーバーで別途設定してください。
変更前
json
{
"securityDefinitions": {
"oauth2": {
"type": "oauth2",
"flow": "password",
"tokenUrl": "https://api.example.com/oauth/token",
"scopes": {}
}
},
"security": [
{
"oauth2": []
}
]
}
変更後
json
{
"securityDefinitions": {
"oauth2": {
"type": "oauth2",
"flow": "accessCode",
"authorizationUrl": "https://api.example.com/oauth/authorize",
"tokenUrl": "https://api.example.com/oauth/token",
"scopes": {}
}
},
"security": [
{
"oauth2": []
}
]
}