説明
OpenAPI 3.0のOAuth2のflows.implicitは、認可応答にアクセストークンを含めるフローを定義します。トークンの漏えいや注入の危険があるため、一般にPKCEを使う認可コードフローへの置き換えが推奨されます。
想定される影響
リダイレクト中に漏えいしたトークンが、その権限内での不正アクセスに悪用されるおそれがあります。注入されたトークンをクライアントが受け入れると、誤ったアカウントで操作する危険もあります。
対処方法
実際のクライアントと認可サーバーをPKCE付きの認可コードフローに移行し、仕様の定義をauthorizationCodeに更新してください。HTTPSのURLを使用してください。このフローでも、クライアントが受け取ったトークンは保護する必要があります。
例
次の抜粋ではpetstore_authを認可コードフローに切り替え、認可URLをHTTPSに修正します。URLは実際のプロバイダーのものに置き換え、PKCEは実際のクライアントとサーバーに実装してください。
変更前
json
{
"openapi": "3.0.0",
"components": {
"securitySchemes": {
"petstore_auth": {
"type": "oauth2",
"flows": {
"implicit": {
"authorizationUrl": "http://example.org/api/oauth/dialog",
"scopes": {
"write:pets": "modify pets in your account",
"read:pets": "read your pets"
}
}
}
}
}
}
}
変更後
json
{
"openapi": "3.0.0",
"components": {
"securitySchemes": {
"petstore_auth": {
"type": "oauth2",
"flows": {
"authorizationCode": {
"authorizationUrl": "https://example.org/api/oauth/dialog",
"tokenUrl": "https://example.com/api/oauth/token",
"scopes": {
"write:pets": "modify pets in your account",
"read:pets": "read your pets"
}
}
}
}
}
}
}