説明
OpenAPI 3.0 の type: http と scheme: oauth は、従来の OAuth 認証方式を記述します。新しい連携や移行を計画する際は、認可サーバーとクライアントのサポート状況を確認してください。この宣言だけで認証の脆弱性があると判断したり、OAuth2 への移行が完了したと考えたりすることはできません。
想定される影響
- サポートされない認証方式は、新しいクライアントやゲートウェイとの連携、保守を難しくすることがあります。
- 文書と実装のフローが異なると、クライアントが認証情報を誤った方法で送信したり、認証に失敗したりする可能性があります。
対処方法
サポートされる OAuth2 フローを選び、認可サーバー、クライアント、API を合わせて移行してください。認可コードフローには PKCE などの現在の推奨対策を適用し、HTTPS、リダイレクト URI、必要なスコープを確認してください。動作を検証してから OpenAPI のセキュリティスキームと security 要件に反映してください。
例
以下はセキュリティスキーム定義の抜粋です。エンドポイントとスコープを実際のサービスに合わせ、各操作に適用する security 要件は別途指定してください。
変更前
json
{
"openapi": "3.0.0",
"components": {
"securitySchemes": {
"petstore_auth": {
"type": "http",
"scheme": "oauth"
}
}
}
}
変更後
json
{
"openapi": "3.0.0",
"components": {
"securitySchemes": {
"petstore_auth": {
"type": "oauth2",
"flows": {
"authorizationCode": {
"authorizationUrl": "https://example.com/api/oauth/dialog",
"tokenUrl": "https://example.com/api/oauth/token",
"scopes": {
"read:pets": "read your pets"
}
}
}
}
}
}
}
変更後の例は OAuth2 の認可コードフローを記述しています。この定義だけで PKCE やサーバー側のトークン検証が設定されるわけではありません。