OpenID Connect & OAuth 2.0

認証 (Authentication) (あなたは誰?) と 認可 (Authorization) (何ができる?) の違いを、この対話型ガイドで理解しましょう。

Digital Identity Illustration

認証 (Authentication) vs. 認可 (Authorization)

最も混乱しやすいポイント。「一番わかりやすい説明」がここにあります。

OpenID Connect

認証 (Authentication)

あなたは誰ですか?
ユーザーの身元を確認するためのプロトコル。これはアイデンティティの問題に答えます。

badge

成果物:IDトークン

パスポートやIDカードのようなもの。

OAuth 2.0

認可 (Authorization)

何ができますか?
リソースへのアクセス権を付与するためのフレームワーク。これは権限の問題に答えます。

key

成果物:アクセストークン

ホテルのルームキーのようなもの。

ホテルの例え

日常的な言葉で違いを可視化します。

Passport Check
身元の証明

パスポート (OIDC)

チェックインの際、パスポートを提示します。受付係はそれを見て、あなたが誰か(名前、写真、国籍)を確認します。これが OpenID Connect です。身元を検証します。

Hotel Key
アクセスの許可

ルームキー (OAuth 2.0)

受付係はルームキーを渡します。このカードは必ずしもあなたが誰かを示すわけではありませんが、204号室へのアクセス権を与えます。これが OAuth 2.0 です。アクセス権に関するものです。

Interactive OpenID Connect Flow

Click "Next Step" to see how an app signs you in using OIDC.

Step 0 of 5

Start the Flow

person

User

You

devices

Client App

e.g., TodoList.com

shield_person
OP

Auth Server

OpenID Provider (Google)

send
badge ID Token
info

Ready?

Click "Start Flow" to see how OpenID Connect works step-by-step.

IDトークン (JWT) の中身

IDトークンは JSON Web Token (JWT) です。ユーザーに関するクレーム(事実)が含まれています。
下の色付きの部分をクリックして意味を確認してください。

Encoded JWT lock
eyJhbGciOiJSUzI1NiIsImtpZCI6IjFhMmIzIn0.eyJpc3MiOiJodHRwczovL2F1dGguY29tIiwic3ViIjoiMTIzNDU2Nzg5MCIsIm5hbWUiOiJKb2huIERvZSIsImlhdCI6MTUxNjIzOTAyMiwiZXhwIjoxNTE2MjQyNjIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
data_object ペイロード (Payload / Claims)
{
  "iss": "https://auth.com",
  "sub": "1234567890",
  "name": "John Doe",
  "iat": 1516239022,
  "exp": 1516242622
}

主要フィールド (クレーム):

  • iss (発行者): 誰がこのトークンを作成したか? (例: Google)。
  • sub (主体): ユーザーID。このユーザーに固有のもの。
  • aud (オーディエンス): このトークンは誰のためか? (あなたのクライアントID)。
  • exp (有効期限): このトークンはいつ無効になるか?