最も混乱しやすいポイント。「一番わかりやすい説明」がここにあります。
「あなたは誰ですか?」
ユーザーの身元を確認するためのプロトコル。これはアイデンティティの問題に答えます。
成果物:IDトークン
パスポートやIDカードのようなもの。
「何ができますか?」
リソースへのアクセス権を付与するためのフレームワーク。これは権限の問題に答えます。
成果物:アクセストークン
ホテルのルームキーのようなもの。
日常的な言葉で違いを可視化します。
チェックインの際、パスポートを提示します。受付係はそれを見て、あなたが誰か(名前、写真、国籍)を確認します。これが OpenID Connect です。身元を検証します。
受付係はルームキーを渡します。このカードは必ずしもあなたが誰かを示すわけではありませんが、204号室へのアクセス権を与えます。これが OAuth 2.0 です。アクセス権に関するものです。
Click "Next Step" to see how an app signs you in using OIDC.
User
You
Client App
e.g., TodoList.com
Auth Server
OpenID Provider (Google)
Click "Start Flow" to see how OpenID Connect works step-by-step.
IDトークンは JSON Web Token (JWT)
です。ユーザーに関するクレーム(事実)が含まれています。
下の色付きの部分をクリックして意味を確認してください。
{
"alg": "RS256",
"kid": "1a2b3"
}
alg: トークンの署名に使用されるアルゴリズム (RSA 256)。
kid: キーID。署名の検証に使用する公開鍵をクライアントに伝えます。
{
"iss": "https://auth.com",
"sub": "1234567890",
"name": "John Doe",
"iat": 1516239022,
"exp": 1516242622
}
HMACSHA256( base64UrlEncode(header) + "." + base64UrlEncode(payload), your-256-bit-secret )
これは暗号による証明です。クライアント (アプリ)
は認証サーバーの公開鍵を使用してこの署名を検証します。
一致した場合、アプリは「このトークンは本物であり、内部のデータは改ざんされていない」と判断します。