CTS-KB

ID Token

あいでぃーとーくん

ID トークン id_token
#認証 #OIDC #JWT #セキュリティ

OpenID Connect が発行する、認証結果を表す JWT(JSON Web Token) 。アクセストークン(OAuth 2.0 が発行する API 利用権)とは異なり、 「ユーザーが誰か」を保証する署名付きクレーム を含む。

アクセストークンとの違い

観点ID TokenAccess Token
目的認証(誰か)認可(何ができるか)
形式必ず JWT(OIDC 仕様)不問(多くは JWT)
送り先クライアント本体API サーバー
有効期限短い(数分〜数時間)短い〜中程度
検証クライアント側で署名検証必須リソースサーバーで検証

標準クレーム(OIDC Core 1.0 で定義)

クレーム意味
iss発行元(Issuer)
subユーザーの一意識別子(Subject)
aud受信者(Audience、通常はクライアント ID)
exp有効期限(Expiration)
iat発行時刻(Issued At)
nonceリプレイ攻撃防止のためのランダム値
auth_time認証された時刻(オプション)

検証時の必須チェック

ID Token を受け取ったクライアントは以下を すべて検証 する必要がある。

  1. 署名検証 : 発行元(IdP)の公開鍵で署名を検証
  2. iss : 期待する IdP からの発行か
  3. aud : 自分のクライアント ID が含まれるか
  4. exp : 有効期限切れでないか
  5. nonce : リクエスト時に送った nonce と一致するか

これらの検証を省略すると、偽造 ID Token を受け入れてしまう脆弱性が生まれる。

関連用語

  • OpenID Connect — ID Token を発行する仕様
  • OAuth 2.0 — アクセストークンの基盤
  • PKCE — ID Token を取得する認可コードフローの拡張

外部リソース