説明
OpenAPI 2.0のsecurityDefinitionsにOAuth2のpasswordフローを定義すると、利用者のパスワードをクライアントに渡す方式を記述することになります。現在のOAuthセキュリティベストプラクティスでは、このフローの使用が禁止されています。
想定される影響
利用者のパスワードを扱うクライアントが増え、漏えいの危険が高まります。複数の手順を必要とするMFAやブラウザー経由のログインにも対応しにくくなります。
対処方法
利用者の権限を委譲する場合は、accessCodeとPKCEに移行してください。認可サーバーとクライアントを合わせて変更し、authorizationUrl、tokenUrl、scopesを実際の設定と一致させます。
例
この例は認証方式の定義の変更を示しています。文書の認証要件として適用するには、全体または操作のsecurityからその方式を参照する必要があります。
変更前
json
{
"swagger": "2.0",
"securityDefinitions": {
"petstore_auth": {
"type": "oauth2",
"flow": "password",
"tokenUrl": "https://api.my.company.com/oauth/token"
}
}
}
変更後
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"
}
}
}
}