OAuth 2.0

ユーザーのパスワードを渡さずに、リソースへの限定的なアクセスを許可する認可フレームワーク

認証セキュリティ

OAuth 2.0 とは

OAuth 2.0 は、RFC 6749 で定義された認可フレームワークで、ユーザーのパスワードをサードパーティに渡さずに、リソースへの限定的なアクセスを許可する。「Google でログイン」が代表的な実装。

OAuth の登場人物

役割 説明
リソースオーナー データの所有者 ユーザー
クライアント アクセスを要求するアプリ Web アプリ
認可サーバー トークンを発行 Cognito, Google
リソースサーバー データを提供する API API Gateway + Lambda

認可コードフロー

1. ユーザー → クライアント: 「ログインしたい」
2. クライアント → 認可サーバー: 認可リクエスト
3. ユーザー → 認可サーバー: ログイン + 同意
4. 認可サーバー → クライアント: 認可コード
5. クライアント → 認可サーバー: 認可コード + クライアントシークレット
6. 認可サーバー → クライアント: アクセストークン + リフレッシュトークン
7. クライアント → リソースサーバー: アクセストークンで API 呼び出し

OAuth vs OIDC

観点 OAuth 2.0 OIDC
目的 認可 (何にアクセスできるか) 認証 (誰か) + 認可
トークン アクセストークン ID トークン + アクセストークン
ユーザー情報 標準化されていない ID トークンに含まれる

グラントタイプ

グラント 用途
Authorization Code Web アプリ (推奨)
Authorization Code + PKCE SPA, モバイル (推奨)
Client Credentials サーバー間通信
Implicit 非推奨 (セキュリティリスク)
Resource Owner Password 非推奨

OAuth 2.0 の理解を深めるには関連書籍が参考になる。

関連用語