Open1

OpenID Connect1.0とOAuth2.0の違いについて

ふじしろふじしろ

自分なりにざっくり

OAuth2.0は認可の仕組み
-> リソースにアクセスすることを許可する
-> 他のサービスやAPIへのアクセス権も付与するため、取得できる情報は幅広い

OpenID Connect1.0は認証の仕組み
-> 本人であることを確認する
-> リソースサーバから取得できる情報は、本人のプロファイル情報に絞られる

https://www.okta.com/jp/identity-101/whats-the-difference-between-oauth-openid-connect-and-saml/#:~:text=OAuth、OpenID Connect、SAML、,標準であることです。

https://zenn.dev/tanaka_takeru/articles/b27f90632efe22

https://solution.kamome-e.com/blog/archive/blog-auth-20221108/

AIに説明してもらう(取得できる情報の違い)

OpenID Connect (OIDC) と OAuth 2.0 では、リソースサーバから取得できる情報の種類が異なります。
OAuth 2.0
OAuth 2.0ではアクセストークンを使って、以下のようなリソースにアクセスできます。

ユーザーのプライベートデータ (Gmail、Googleカレンダーなど)
API経由で公開されているデータ
クラウドストレージ上のファイルなど

つまり、OAuth 2.0ではあらゆる種類の保護されたリソースやAPIにアクセスでき、その内容次第です。
OpenID Connect (OIDC)
一方、OIDCではID TokenとUserInfoEndpointから、以下の種類の情報を取得できます。

ユーザープロファイル情報 (名前、メールアドレスなど)
OIDCで定義された標準的なスコープ (profile、email、address、phoneなど)
OIDプロバイダが提供する追加の拡張情報

つまり、OIDCではユーザーの認証情報とプロファイル情報が主な取得対象となります。
また、OIDCはOAuth 2.0をベースにしているため、OAuth 2.0と同様にアクセストークンを取得し、リソースサーバにアクセスすることも可能です。
従って、OIDCではOAuth 2.0で取得できる情報に加えて、標準化されたユーザープロファイル情報や拡張情報を追加で取得できるという違いがあります。
OIDCを使えばユーザー認証とリソースアクセスの両方のニーズを満たすことができ、標準化された情報形式で開発が容易になるというメリットがあります。

AIに説明してもらう(認識確認)

OIDCとOAuthの大きな違いは以下の通りです。
OpenID Connect (OIDC)

ユーザー自身の認証情報やプロファイル情報などの取得に特化
ID Tokenから取得できる情報は、そのユーザー本人に関する情報に限定される

OAuth 2.0

ユーザーによるリソースへのアクセス権限付与を主な目的とする
アクセストークンを使えば、そのユーザーに代わって様々なサービスやAPIの保護されたリソースにアクセス可能
アクセス可能なリソースは、そのユーザー自身だけでなく、他のサービスやAPIのリソースも含まれる

つまり、OIDCはあくまでエンドユーザーの認証情報そのものに焦点を当てた仕様です。
一方でOAuth 2.0は、認可されたアプリケーションが「エンドユーザーに代わって」様々なサービスのリソースにアクセスできるようにする認可フレームワークです。
実際の用途として、OIDCを使えばシングルサインオンの実現が可能ですが、OAuth 2.0を使えば例えばカレンダーアプリがGmailの予定情報にアクセスしたり、クラウドストレージにファイルをアップロードしたりできます。
このようにOIDCとOAuthでは対象とするリソースの範囲が異なり、ユースケースに合わせて使い分ける必要があります。