OAuth 2.0 フロー
OAuth 2.0 では、アプリケーションの種類や要件に応じて異なるフロー(グラントタイプ)を使用します。 各フローの仕組みを理解し、適切なフローを選択できるようになりましょう。
認可コードフロー
推奨サーバーサイドアプリ向けの最も標準的なフロー
認可コード + PKCE
最推奨SPA・ネイティブアプリ向け。現在最も推奨されるフロー
インプリシットフロー
非推奨直接トークンを返す。セキュリティ上の問題から非推奨
クライアントクレデンシャル
M2Mユーザーが関与しないサーバー間(M2M)通信向け
デバイス認可フロー
デバイススマートTV・IoTなど入力制限のあるデバイス向け
リフレッシュトークン
補助アクセストークンを再認証なしで更新するフロー
フロー比較表
| フロー名 | ユースケース | セキュリティ | 推奨度 |
|---|---|---|---|
| 認可コード | サーバーサイドWebアプリ | 高 | 推奨 |
| 認可コード + PKCE | SPA・ネイティブアプリ | 高 | 最推奨 |
| インプリシット | (レガシーSPA) | 低 | 非推奨 |
| クライアントクレデンシャル | サーバー間通信 | 高 | 用途限定 |
| デバイス認可 | IoT・スマートTV | 中 | 用途限定 |
| リフレッシュトークン | トークン更新 | 中〜高 | 推奨 |
どのフローを使うべきか?
ユーザーが関与する?
Yes:はい
No:いいえ → クライアントクレデンシャルフロー
ブラウザ/入力機能がある?
Yes:はい
No:いいえ → デバイス認可フロー
client_secret を安全に保管できる?
Yes:はい → 認可コードフロー
No:いいえ → 認可コード + PKCE フロー
インプリシットフローは使わない
どのケースでもインプリシットフローは選択肢に入りません。 レガシーシステムを維持している場合は、認可コード + PKCE フローへの移行を検討してください。