OAuth 2.0

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

認証セキュリティ

OAuth 2.0 とは

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

OAuth の登場人物

OAuth の登場人物を以下にまとめる。

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

認可コードフロー

認可コードフローを図で示す。

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

OAuth vs OIDC

OAuth と OIDC の違いを以下にまとめる。

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

グラントタイプ

グラントタイプを以下にまとめる。

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

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

この記事は役に立ちましたか?

関連用語

関連する記事