RFC 6749: OAuth 2.0 認可フレームワーク
RFC 6749 は OAuth 2.0 の基本仕様です。このドキュメントでは、OAuth 2.0 の概念から各認可フローまでを解説します。
第1部: 概要編
OAuth 2.0 とは何か?
OAuth 2.0 は、サードパーティアプリケーションがユーザーのリソースに安全にアクセスするための認可フレームワークです。
重要なポイント:認可(Authorization) であり、認証(Authentication) ではありません。
なぜ OAuth 2.0 が必要なのか?
OAuth 2.0 以前は、サードパーティアプリがユーザーのリソースにアクセスするには、ユーザーのパスワードを直接受け取る必要がありました。
| 問題 | 説明 |
|---|---|
| パスワード共有 | ユーザーがサードパーティにパスワードを教える必要がある |
| 過剰な権限 | サードパーティがユーザーの全権限を持ってしまう |
| 取り消し不可 | 特定のアプリだけアクセスを取り消すことが困難 |
| セキュリティリスク | パスワード漏洩時の影響が甚大 |
OAuth 2.0 は、アクセストークンという有効期限付きの限定的な権限を付与することで、これらの問題を解決します。
4つの登場人物(ロール)
OAuth 2.0 には 4 つのロールが登場します。
┌─────────────────┐ ┌─────────────────┐
│ Resource Owner │ │ Client │
│ (ユーザー) │ │ (アプリ) │
└────────┬────────┘ └────────┬────────┘
│ 認可 │ トークン要求
▼ ▼
┌─────────────────┐ ┌─────────────────┐
│ Authorization │◄────►│ Resource │
│ Server │ │ Server │
│ (認可サーバー) │ │ (リソースサーバー) │
└─────────────────┘ └─────────────────┘
| ロール | 説明 | 例 |
|---|---|---|
| Resource Owner | 保護されたリソースの所有者 | エンドユーザー |
| Client | リソースにアクセスしたいアプリケーション | Webアプリ、モバイルアプリ |
| Authorization Server | アクセストークンを発行するサーバー | Google OAuth, Auth0 |
| Resource Server | 保護されたリソースをホストするサーバー | Google API, GitHub API |