OAuth 2.0 おーおーす2.0
OAuth認可アクセストークンAPI認可委任フロー
OAuth 2.0について教えて
簡単に言うとこんな感じ!
「Googleのアカウントで他のサービスにログイン」するときに裏で動いている認可の仕組みだよ。パスワードを渡さずに「この操作だけ許可する」という限定的なアクセス権を第三者サービスに委任できるんだ!
OAuth 2.0とは
OAuth 2.0(Open Authorization 2.0) は、リソースオーナー(ユーザー)がパスワードを渡すことなく、第三者アプリに特定のリソースへのアクセスを委任するための認可フレームワークです。
重要なのは、OAuth 2.0は認証(Authentication:あなたは誰か) ではなく 認可(Authorization:あなたは何をしていいか) のプロトコルだという点です。「Googleでログイン」に見えても、OAuth 2.0だけでは認証は完了しておらず、認証まで対応するには OpenID Connect(OIDC)が必要です。
実務でよく見る使用例:
- 「Googleアカウントで〇〇にログイン」
- SlackやGitHubへのサードパーティアプリ連携
- スマートフォンアプリがGoogleカレンダーのデータを読む
OAuth 2.0の主なグラントタイプ(フロー)
| グラントタイプ | 用途 | 特徴 |
|---|---|---|
| Authorization Code | Webアプリ・ネイティブアプリ | 最も安全。認可コード経由でトークン取得 |
| Authorization Code + PKCE | SPAやモバイルアプリ | Authorization Codeの拡張。シークレットなしで安全 |
| Client Credentials | サーバー間通信・マイクロサービス | ユーザー不在のM2M通信向け |
| Device Code | スマートTV・IoT機器 | ブラウザ操作が難しいデバイス向け |
| Implicit | (非推奨) | SPAで使われたが現在はPKCEに移行 |
歴史と背景
- 2007年:TwitterとMa.gnoliaがAPI認可の問題を議論し、OAuth 1.0のドラフト作成
- 2010年:OAuth 1.0がRFC 5849として標準化
- 2012年:OAuth 2.0がRFC 6749/6750として標準化(1.0とは互換性なし)
- 2013年〜:Google・Facebook・GitHubがOAuth 2.0を採用し急速に普及
- 2019年:OAuth 2.0 Security BCP(RFC 9700)が策定されPKCEが推奨に
- 2023年:OAuth 2.1のドラフトで非推奨フローを整理・集約
OAuth 2.0 Authorization Codeフローの概要
関連する規格・RFC
| 規格・RFC番号 | 内容 |
|---|---|
| RFC 6749 | OAuth 2.0 Authorization Framework |
| RFC 6750 | Bearer Token Usage |
| RFC 7636 | PKCE(Proof Key for Code Exchange) |
| RFC 8252 | OAuth 2.0 for Native Apps |
関連用語
- OpenID Connect — OAuth 2.0を拡張して認証機能を追加したプロトコル
- JWT — OAuth 2.0のアクセストークンとして広く使われる形式
- SSO — OAuth 2.0/OIDCを使って実現するシングルサインオン
- APIキー — OAuth 2.0のアクセストークンと比較される認証方式