OpenID Connect(OIDC)とOAuth 2.0の違い
安全確保支援士勉強の勉強メモ
項目 | OAuth 2.0 | OpenID Connect (OIDC) |
---|---|---|
主な目的 | アクセス許可のための認可フレームワーク | 認証とアクセス許可のためのフレームワーク |
トークンの種類 | アクセストークン | アクセストークン、IDトークン |
認証プロセス | 認可の焦点 | 認証の焦点 |
ユーザーエンドポイント | 通常含まれない | ユーザーエンドポイントが含まれる |
この表は、OpenID ConnectとOAuth 2.0の主要な違いを要約しています。
OAuth 2.0はアクセス許可に焦点を当て、アクセストークンを取得するためのプロトコル。
OpenID Connectはユーザーの認証を含む認証とアクセス許可のための拡張プロトコル。
OpenID Connectでは、以下の4つのフローが定義されている。
OpenID Connectは、OAuth 2.0を拡張した認証プロトコルですが、フローと呼ばれる複数のパターンがあります。フロー(シーケンス図)とは、IDトークンやアクセストークンを発行するためのやり取りの仕方のことです。
認可コードフロー:最も一般的なフローで、Webアプリケーションなどに適しています。認可サーバーから認可コードを受け取り、それを使ってIDトークンやアクセストークンを取得します。
暗黙フロー:ブラウザベースのアプリケーションやモバイルアプリケーションなどに適しています。認可サーバーから直接IDトークンやアクセストークンを受け取ります。
ハイブリッドフロー:認可コードフローと暗黙フローの組み合わせで、Webアプリケーションやモバイルアプリケーションなどに適しています。認可サーバーから認可コードとIDトークンを受け取り、それを使ってアクセストークンを取得します。
リソースオーナーパスワードクレデンシャルフロー:ユーザー名とパスワードを直接クライアントに入力する場合に適しています。認可サーバーにユーザー名とパスワードを送信し、IDトークンやアクセストークンを受け取ります。
メリット、デメリット
暗黙フローはシンプルで高速ですが、セキュリティ上のリスクが高い
リソースオーナーパスワードクレデンシャルフローは便利ですが、ユーザーのパスワードを第三者に渡すことになるので、信頼性が低い
自分のアプリケーションに合ったフローを選択することが重要です。