Shikata Ga Nai

Private? There is no such things.

OAuth 2.0の仕組みとは?

Hello there, ('ω')ノ

OAuth 2.0は、Webアプリケーション同士がユーザーのデータを安全に共有するための標準的な仕組みです。ユーザーのログイン情報を共有せずに、アプリに限定的なアクセス権を与えることができます。


🔄 登場人物(3つの役割)

  1. クライアントアプリケーション  → ユーザーのデータにアクセスしたいアプリ(例:スケジュールアプリ)

  2. リソースオーナー(ユーザー)  → 自分のデータを持っている本人(例:あなた)

  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, (^^ゞ