採用に向く条件
選ぶ理由
- パスワードを共有せず権限委譲
- スコープで権限を細かく絞れる
- 業界標準で連携先が豊富
製品プロフィール
認可フレームワーク
パスワードを渡さずに、サードパーティへ「ここまでアクセスしてよい」という権限を委譲する認可の標準。「〇〇でログイン」や API 連携の土台。
基本情報
選定ガイド
採用する理由と、事前に受け入れるべきトレードオフを分けて確認します。
採用に向く条件
事前に確認する条件
詳しい解説
OAuth 2.0 は、パスワードを相手に渡さずに「ここまでアクセスしてよい」という権限だけを第三者へ委譲するための標準仕様(RFC 6749)です。鍵となるのは「アクセス委譲(認可)」であって、本人確認そのものではありません。
たとえば、あるアプリに「Google ドライブの特定ファイルだけ読ませたい」とき、Google のパスワードをアプリに教える代わりに、限定された権限を持つアクセストークンを発行して渡します。
横にスクロール
OAuth 2.0 は 4 つの役割で構成されます。
権限は スコープ(scope) で「読み取りだけ」「特定の範囲だけ」と絞り込み、発行された アクセストークンには有効期限があり、切れたら リフレッシュトークンで再取得します。
権限取得の流れ(グラントタイプ)は用途別に複数あります。
| フロー | 用途 | 特徴 |
|---|---|---|
| 認可コード + PKCE | Web/モバイル/SPA(現行の標準) | ブラウザ経由で同意→コードをトークンに交換。PKCE で横取り対策 |
| クライアントクレデンシャル | サーバー間(ユーザー不在) | アプリ自身の資格でトークン取得 |
| デバイスコード | TV・CLI など入力が貧弱な端末 | 別端末でコードを入力して認可 |
| インプリシット/パスワード | 非推奨 | 旧式。現在は使わない方向 |
現在は、SPA やモバイルでも 認可コードフロー+PKCE を使うのが推奨です。
1. クライアント → 認可サーバー: 認可リクエスト(scope, PKCE)
2. ユーザーが同意 → 認可コードを受領
3. クライアント → 認可サーバー: コードをアクセストークンに交換
4. クライアント → リソースサーバー: トークンを付けて API 呼び出し
OAuth 2.0 が扱うのはあくまで「何にアクセスしてよいか」という認可です。「誰がログインしたのか」という本人確認(認証)は対象外で、その役割は上に乗せる OpenID Connect が担います。
「○○でログイン」と書かれていても、ログイン(認証)部分は OIDC、外部サービスへの API 連携部分は OAuth 2.0、と整理すると混乱しにくくなります。
SaaS 同士の連携や、外部アプリに自社 API を使わせる場面の土台として広く使われます。
OAuth 2.0 を「ログインの仕組み」と誤解したまま認証に流用すると、本人確認の保証が不十分になります(トークンを持っている=本人とは限らない)。認証が必要なら OIDC を併用します。実装では、スコープを最小限に絞り、リダイレクト URI の完全一致検証、state による CSRF 対策、PKCE の使用を徹底し、トークンは安全に保管します。
総じて OAuth 2.0 は、パスワードを共有せずに限定権限を委譲する現代の API 連携の土台で、PKCE と最小スコープを前提に設計することが安全運用の鍵です。
実装・運用の視点
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
API へのアクセス委譲
種別: 認可フレームワーク / 目的: 認可(アクセス委譲) / トークン/形式: アクセストークン
スコープで権限を細かく絞れる
あくまで認可で、本人確認(認証)は別(→ OIDC)
向いている用途