2026年9月5日 土曜日
AI時短ラボ
研究· 約11

OpenID Connectの『name』『given_name』クレームがCWTにやってくる──SPICE WGのOIDC-CWTを読む

JWT(JSON Web Token)で既に使われているOpenID Connectの標準クレーム(name・given_nameなど)を、省リソース環境向けのCBOR Web Token(CWT)でも使えるように登録するIETF SPICEワーキンググループのドラフトを読んだ。中身はクレームをCWTのレジストリに登録するための事務的な対応表だが、著者は同じ日に公開する姉妹記事で扱うSD-CWTのRust実装プロトタイプを作った人物と同一だった。

OpenID Connectの『name』『given_name』クレームがCWTにやってくる──SPICE WGのOIDC-CWTを読む
執筆・編集:
目次

ユーザーの氏名や名(given name)といった、OpenID Connectで標準化されている項目(クレーム)は、JWT(JSON Web Token)の世界ではすでに広く使われている。だが、IoTや省リソース環境向けのバイナリトークン形式であるCBOR Web Token(CWT)には、これらのクレームがまだ登録されていない。IETF SPICE(Secure Patterns for Internet CrEdentials)ワーキンググループのドラフト「OpenID Connect Standard Claims Registration for CBOR Web Tokens」(rev06、2026年7月23日更新、著者B. Maldant氏・M. B. Jones氏)の本文を確認すると、この空白を埋めるための、地味だが実務的な「対応表」を作る作業であることが分かる。

3行まとめ

  • このドラフトは、OpenID ConnectがJWT向けに標準化したnamegiven_nameといったクレームを、CWTの「CBOR Web Token (CWT) Claims」IANAレジストリに登録するための、フィールドごとの対応表を定義する。クレーム名・説明・対応するJWTクレーム名・整数キー(Claim Key)・値の型・変更管理者を、クレームごとに列挙する形式
  • sub(主体)クレームはOpenID Connectの標準クレーム一覧に含まれるが、既にCWTのレジストリに登録済みのため、このドラフトの対象からは意図的に除外されている
  • 同じ日に公開する姉妹記事で扱うSD-CWT(選択的開示CBOR Web Token)のRustプロトタイプ実装(beltram/esdicawt)の作者B. Maldant氏(SimpleLogin社)が、このドラフトの筆頭著者でもある

なぜ必要か

ドラフトの導入部はこう説明している。

OpenID Connect [OpenID.Core] is an authentication standard including standard claims already in use for JSON Web Tokens (JWT) [RFC7519]. CBOR Web Tokens (CWT) [RFC8392] have a claims registry, but do not include most of these claims. This draft aims at unifying use of OpenID Connect claims in JWTs and CWTs.

(OpenID Connectは、JSON Web Token(JWT)で既に使われている標準クレームを含む認証標準だ。CBOR Web Token(CWT)はクレームのレジストリを持っているが、これらのクレームのほとんどを含んでいない。このドラフトは、JWTとCWTの両方でOpenID Connectのクレームの使い方を統一することを目指す)

クレームごとの対応表——名前・説明・整数キー

具体的な登録内容はこうだ。

3.1. name: Claim Name: name. Claim Description: End-User's full name in displayable form including all name parts, possibly including titles and suffixes, ordered according to the End-User's locale and preferences. JWT Claim Name: name. Claim Key: TBD1 (170 suggested). Claim Value Type(s): text string. Change Controller: IETF.

(3.1 name:クレーム名:name。クレームの説明:表示可能な形式のエンドユーザーのフルネーム。敬称や接尾辞を含む可能性のある全ての名前の部分を、エンドユーザーのロケールと好みに従った順序で含む。JWTクレーム名:name。クレームキー:TBD1(170が提案されている)。クレーム値の型:テキスト文字列。変更管理者:IETF)

CWTはJSONの文字列キーではなく整数キーを使うバイナリ形式のため、このように各クレームに新しい整数値(この例では170が提案)を割り当てる作業が必要になる。この対応表はnamegiven_nameをはじめとする複数のOpenID Connect標準クレームについて、同じ形式で繰り返されている。

subクレームは意図的に対象外

このドラフトの範囲設定にも注意書きがある。

Note that while the "sub" claim is included in the table of claims in Section 5.1 of [OpenID.Core], it is not included here because it is already registered in the "CBOR Web Token (CWT) Claims" [IANA.CWT.Claims] registry.

subクレームはOpenID Connectのクレーム表(Section 5.1)に含まれているが、既に「CBOR Web Token (CWT) Claims」IANAレジストリに登録済みのため、ここには含まれていないことに注意してほしい)

これは、CWT自体が元々JWTのクレームセット(RFC 7519)を土台にした形式であり、subのような基本的なクレームはCWT標準化の初期段階(RFC 8392)で既に整備されていたためだ。このドラフトが埋めているのは、OpenID Connectが後から追加した、より詳細なユーザープロファイル系のクレームという、その先の部分になる。

全19クレームの対応表

ドラフト本文(Section 3.1〜3.19)を1つずつ確認し、提案キー番号と値の型を並べると次のようになる。

クレーム名 提案キー(TBD番号) 値の型
name TBD1(170) text string
given_name TBD2(171) text string
family_name TBD3(172) text string
middle_name TBD4(173) text string
nickname TBD5(174) text string
preferred_username TBD6(175) text string
profile TBD7(176) text string
picture TBD8(177) text string
website TBD9(178) text string
email TBD10(179) text string
email_verified TBD11(180) bool
gender TBD12(181) text string
birthdate TBD13(182) text string
zoneinfo TBD14(183) text string
locale TBD15(184) text string
phone_number TBD16(185) text string
phone_number_verified TBD17(186) bool
address TBD18(187) map
updated_at TBD19(188) integer or finite floating-point number

提案キーは170から188まで19個連番で並んでおり、addressだけがmap型(郵便番号や国名などを持つ入れ子構造)、email_verifiedphone_number_verifiedが真偽値、updated_atが数値型で、残りはすべてtext stringになっている。

IANAレジストリを直接確認すると、170〜188番はまだ空いていた

「TBD1(170が提案)」という表記が示す通り、これらのキー番号はまだ正式に確定していない。実際にIANAの「CBOR Web Token (CWT) Claims」レジストリを直接開いて確認したところ、この記事の確認時点(2026年8月31日)で登録されているクレームキーのうち、最大の番号は169(MOSIPが登録したidentity-data)で、このドラフトが提案する170〜188番は、19番すべてがまだ登録されていない空き番号だった。ドラフトが「提案(suggested)」という表現を使っているのは伊達ではなく、このドラフトがAccepted相当の段階まで進んで正式にIANAへ登録されるまでは、他のドラフトが同じ番号帯を先に押さえる可能性もゼロではない。

クレーム全リストと採用実装までは確認していない

実際にどの実装がこのクレーム対応表を採用しているかについては、この記事の一次ソースの範囲では確認できなかった。著者B. Maldant氏によるSD-CWTのRust実装beltram/esdicawtはGitHub API実測でスター3(2026年8月31日確認)と、まだ小規模な個人プロジェクトの段階であることも確認した。この記事を書いている自分自身は、CWTやCOSEを使った認証システムの実装経験がなく、この対応表が実務上どれだけ急を要するものかについての判断材料は持たない。日本語ではZenn・Qiitaともに、このドラフト単体を扱った記事は検索時点で見当たらなかった。

関連記事: MCP(Model Context Protocol)とは

感想・指摘はコメント欄へ。

シェア: ポスト はてブ

出典・参照資料

AIニュースの解説を動画でも

YouTubeでは注目ニュースの背景を解説し、Xでは新着記事をお知らせしています。

コメント

まだコメントはありません。最初のコメントを書いてみませんか?

AIについて聞きたいことはありますか?

質問箱で無料で受け付けています。回答は公開され、他の方の参考にもなります。

質問箱を見る →

新しい記事をメールで受け取る

AIの新しい発表を、出典付きで整理して届けます。

関連記事

AIモデルに『改ざんされていない証明』を付ける──OpenSSF Model Signing (OMS)の署名フォーマットを読むの記事画像
研究09.05読了11

AIモデルに『改ざんされていない証明』を付ける──OpenSSF Model Signing (OMS)の署名フォーマットを読む

出典 ─ GitHub: ossf/model-sig
『ブロックした数が多い=安全』ではない、というAIエージェント向けセキュリティ設計の記事画像
研究09.03読了13

『ブロックした数が多い=安全』ではない、というAIエージェント向けセキュリティ設計

出典 ─ VinayK88/AgentShield(G
`pip install dspy[deno]`だけでインストールが完結──DSPyがコード実行サンドボックスの穴を5つ塞いだ話の記事画像
検証09.03読了13

`pip install dspy[deno]`だけでインストールが完結──DSPyがコード実行サンドボックスの穴を5つ塞いだ話

出典 ─ stanfordnlp/dspy 3.3.1
Anthropicがオープンウェイトの立場を表明──「禁止を求めたことは一度もない」は本当か、対策3つを全部読んだの記事画像
業界07.28読了16

Anthropicがオープンウェイトの立場を表明──「禁止を求めたことは一度もない」は本当か、対策3つを全部読んだ

出典 ─ Our position on open-w
Kimi K3の重みが公開された──1.56TBの中身を開けて、公称スペックを全部数え直したの記事画像
モデル07.28読了16

Kimi K3の重みが公開された──1.56TBの中身を開けて、公称スペックを全部数え直した

出典 ─ Kimi K3 Technical Repo
全DRAMを殴れるパターンを見つけた研究「Blacksmith」──GPU向けRowhammer攻撃の源流をたどるの記事画像
研究09.05読了11

全DRAMを殴れるパターンを見つけた研究「Blacksmith」──GPU向けRowhammer攻撃の源流をたどる

出典 ─ Blacksmith(COMSEC公式研究ペ
検査資格の番号だけ隠して有効性だけ見せる──JWTの『選択的開示』をCBORに持ち込むSD-CWTを読むの記事画像
研究09.05読了12

検査資格の番号だけ隠して有効性だけ見せる──JWTの『選択的開示』をCBORに持ち込むSD-CWTを読む

出典 ─ IETF「Selective Disclos
エージェントのシステムプロンプトをハッシュ化して身元にする──Agentic JWTの『エージェントチェックサム』を読むの記事画像
研究09.04読了12

エージェントのシステムプロンプトをハッシュ化して身元にする──Agentic JWTの『エージェントチェックサム』を読む

出典 ─ IETF Datatracker「draft