Hello there, ('ω')ノ
OAuth 2.0は、Webアプリケーション同士がユーザーのデータを安全に共有するための標準的な仕組みです。ユーザーのログイン情報を共有せずに、アプリに限定的なアクセス権を与えることができます。
🔄 登場人物(3つの役割)
クライアントアプリケーション → ユーザーのデータにアクセスしたいアプリ(例:スケジュールアプリ)
リソースオーナー(ユーザー) → 自分のデータを持っている本人(例:あなた)
OAuthサービスプロバイダー → データを管理しているサイト(例:Google、Facebook) → 認可サーバー(ログインと許可の管理)とリソースサーバー(実データの管理)を持つ
🧭 OAuth 2.0の基本的な流れ(主に2種類のフロー)
OAuthには複数の認可フロー(Grant Type)がありますが、代表的なのは以下の2つです。
- Authorization Code Grant(認可コードフロー)
- Implicit Grant(インプリシットフロー)※古く、今は非推奨
基本的な流れはどちらも次のとおりです:
✅ ステップ1:アクセス要求
クライアントアプリが、OAuthプロバイダーに「○○のデータにアクセスしたい」とリクエストを送ります。 → このとき「どのフローを使うか」や「何の権限が欲しいか(scope)」も伝えます。
✅ ステップ2:ユーザーの同意
ユーザーはOAuthプロバイダー(例:Google)の画面でログインし、クライアントアプリが求めるアクセス権を許可/拒否します。
✅ ステップ3:アクセストークンの受け取り
ユーザーの許可を得たクライアントアプリは、OAuthプロバイダーからアクセストークンを受け取ります。 ※これは「この人から○○のデータへのアクセスを許可された証明書」のようなものです。
✅ ステップ4:データへのアクセス
クライアントアプリはアクセストークンを使って、OAuthプロバイダーのリソースサーバーから必要な情報を取得します。
📌 ポイント
- パスワードを第三者に渡さない安全設計
- アプリごとに「アクセス範囲(scope)」が制限できる
- フローの種類によってセキュリティ対策や用途が異なる(例:認可コードフローはセキュア)
Best regards, (^^ゞ