LWS 1.0 認証スイート: 制御識別子を用いた自己署名アイデンティティ

W3C 作業草案

この文書に関する詳細
このバージョン:
https://www.w3.org/TR/2026/WD-lws10-authn-ssi-cid-20260609/
最新公開バージョン:
https://www.w3.org/TR/lws10-authn-ssi-cid/
最新編集者草案:
https://w3c.github.io/lws-protocol/lws10-authn-ssi-cid/
履歴:
https://www.w3.org/standards/history/lws10-authn-ssi-cid/
コミット履歴
編集者:
Jesse Wright (オックスフォード大学)
著者:
Aaron Coburn (Inrupt Inc.)
フィードバック:
GitHub w3c/lws-protocol (プルリクエスト, 新しい課題, 未解決の課題)

要約

この文書は、Linked Web Storage (LWS) プロトコルのための認証スイートを定義し、クライアントが 自身のアイデンティティ・トークンに署名できる場合に LWS と統合できるようにします。

この文書のステータス

このセクションは、この 文書の公開時点におけるステータスについて説明します。現在の W3C 公開物の一覧と、この技術報告書の最新リビジョンは、 W3C 標準および草案 インデックスで確認できます。

これは非公式提案です。

この文書は、Linked Web Storage ワーキング グループにより、 勧告 トラックを用いて作業草案として公開されました。

作業草案としての公開は、 W3C およびそのメンバーによる承認を 意味するものではありません。

これは草案文書であり、いつでも他の文書によって更新、置換、または廃止される可能性があります。 この文書を進行中の作業以外のものとして引用することは適切ではありません。

この文書は、 W3C 特許 ポリシーの下で運営されるグループによって作成されました。 W3C は、このグループの成果物に関連して行われた 特許開示の公開一覧を管理しています。 そのページには、特許を開示するための 手順も含まれています。ある個人が、その個人の考えでは 必須クレームを含む 特許について実際の知識を有している場合、その個人は W3C 特許ポリシーの第6節に従って その情報を開示しなければなりません。

この文書は、 2025年8月18日付 W3C プロセス文書に従います。

1. 序論

自己発行アイデンティティは、アプリケーションが自身の代理として動作する場合に重要です。これには、 自律的なボットやサーバーサイドのスクリプトなどが含まれます。 これらの場合、エージェントは 鍵ペアの秘密部分を安全に管理でき、それを使用して署名付き JSON Web Token (JWT) を生成します。 この仕様は、この種の エージェントが、Linked Web Storage で使用できる 認証クレデンシャルを どのように生成できるかを説明します。

2. 適合性

非規範的であると明示されたセクションに加え、この 仕様におけるすべての作成ガイドライン、図、例、および注記は非規範的です。それ以外のすべては規範的です。

この文書におけるキーワード MAYMUST、および MUST NOT は、 ここに示されるようにすべて大文字で現れる場合にのみ、 BCP 14 [RFC2119] [RFC8174] に記述されているとおりに解釈されます。

3. 用語

「authorization server」および「client」という用語は、The OAuth 2.0 Authorization Framework [RFC6749] によって定義されます。

「controlled identifier document」および「verification method」という用語は、W3C Controlled Identifiers 1.0 [CID-1.0] によって定義されます。

「JSON Web Token (JWT)」および「claim」という用語は、JSON Web Token [RFC7519] によって定義されます。

エージェント」、 「認証 クレデンシャル」、および「認証 スイート」という用語は、Linked Web Storage Protocol [LWS10-CORE] によって定義されます

4. 認証クレデンシャルの 直列化

自己発行の 認証クレデンシャルは、 署名付き JSON Web Token (JWT) として直列化されます。JWT を LWS の 認証クレデンシャルとして使用するには、 以下の追加要件が適用されます。

JWT は署名アルゴリズムとして "none" を使用してはなりません

JWT は、LWS サブジェクト 識別子に sub (subject) クレームを使用しなければなりません

JWT は、LWS 発行者識別子に iss (issuer) クレームを使用しなければなりません

JWT は、LWS クライアント 識別子に client_id (client ID) クレームを使用しなければなりません

クレーム subiss、および client_id はすべて、 同じ URI 値を使用しなければなりません

ID Token における任意のオーディエンス制限は、aud (audience) クレームを使用しなければなりませんaud クレームは、対象の認可サーバーを 含まなければなりません

JWT は、トークンの有効期限を示す exp (expiration) クレームを 含まなければなりません

JWT は、トークンが発行された時刻を示す iat (issued at) クレームを 含まなければなりません

LWS 認証クレデンシャルでもある JWT の例を以下に示します。

{
  "kid": "c1f52577",
  "kty": "EC",
  "alg": "ES256",
  "typ": "JWT",
  "crv": "P-256"
}
.
{
  "sub": "https://id.example/agent",
  "iss": "https://id.example/agent",
  "client_id": "https://id.example/agent",
  "aud": ["https://as.example"],
  "iat": 1761313600,
  "exp": 1761313900
}
.
signature

5. 認証クレデンシャルの 検証

JWT を LWS 認証クレデンシャルとして検証するには、 検証者と発行者との間に信頼関係が存在していなければなりません。

既存の信頼関係が存在しない場合、検証者は 認証クレデンシャル内の sub (subject) クレームを逆参照しなければなりません。 結果として得られるリソースは、サブジェクト識別子に等しい id 値を持つ 有効な controlled identifier document [CID-1.0] として形式化されていなければ なりません

検証者は、"none" に等しい alg ヘッダーパラメーターを使用するいかなるトークンも 拒否しなければなりません

検証者は、認証クレデンシャル データモデルによって記述されるすべてのクレームを検証しなければなりません

検証者は、署名付き JWT ヘッダーの kid (key id) 値を使用して、サブジェクトの controlled identifier document から検証方法を識別しなければ なりません。 この処理は [CID-1.0] セクション 3.3 に記述されています。 controlled identifier document から選択された検証方法を使用して、JWT の署名は [RFC7515] セクション 5.2 に記述されているとおりに 検証されなければなりません

検証者は、現在時刻が exp クレームによって表される時刻より前であることを保証しなければなりません。 実装者は、クロックのずれを考慮して、ある程度の小さな余裕を設けてもかまいません

Controlled Identifier Document の例を以下に示します。

{
    "@context": [
        "https://www.w3.org/ns/cid/v1" ],
    "id": "https://id.example/agent",
    "authentication": [{
        "id": "https://id.example/agent#c1f52577",
        "type": "JsonWebKey",
        "controller": "https://id.example/agent",
        "publicKeyJwk": {
            "kid": "c1f52577",
            "kty": "EC",
            "crv": "P-256",
            "alg": "ES256",
            "x": "f83OJ3D2xF1Bg8vub9tLe1gHMzV76e8Tus9uPHvRVEU",
            "y": "x_FEzRu9m36HLN_tue659LNpXW6pCyStikYjKIWI5a0"
        }
    }]
}

6. トークン型識別子

認証クレデンシャルとして使用される 自己発行 JSON Web Token は、認可サーバーとやり取りする際に urn:ietf:params:oauth:token-type:jwt URI を使用しなければなりません

7. セキュリティ考慮事項

このセクションは非規範的です。

「Best Current Practice for OAuth 2.0 Security」[RFC9700] および「OpenID Connect Core 1.0」セクション 16 [OPENID-CONNECT-CORE] に記述される すべてのセキュリティ考慮事項は、この仕様に適用されます。

8. プライバシー考慮事項

このセクションは非規範的です。

Issue 119: 認証スイートにプライバシー考慮事項 セクションを追加する

このセクションは完成させる必要があります。

A. 参考文献

A.1 規範的参考文献

[CID-1.0]
Controlled Identifiers v1.0. Michael Jones; Manu Sporny. W3C. 2025年5月15日. W3C 勧告. URL: https://www.w3.org/TR/cid-1.0/
[LWS10-CORE]
Linked Web Storage Protocol 1.0. W3C. FPWD. URL: https://www.w3.org/TR/lws10-core/
[RFC2119]
RFC において要求レベルを示すために用いる キーワード. S. Bradner. IETF. 1997年3月. 現行ベストプラクティス. URL: https://www.rfc-editor.org/rfc/rfc2119
[RFC6749]
OAuth 2.0 認可 フレームワーク. D. Hardt, Ed. IETF. 2012年10月. 提案標準. URL: https://www.rfc-editor.org/rfc/rfc6749
[RFC7515]
JSON Web Signature (JWS). M. Jones; J. Bradley; N. Sakimura. IETF. 2015年5月. 提案標準. URL: https://www.rfc-editor.org/rfc/rfc7515
[RFC7519]
JSON Web Token (JWT). M. Jones; J. Bradley; N. Sakimura. IETF. 2015年5月. 提案標準. URL: https://www.rfc-editor.org/rfc/rfc7519
[RFC8174]
RFC 2119 キーワードにおける大文字と小文字の曖昧さ. B. Leiba. IETF. 2017年5月. 現行ベストプラクティス. URL: https://www.rfc-editor.org/rfc/rfc8174

A.2 参考情報としての参考文献

[OPENID-CONNECT-CORE]
OpenID Connect Core 1.0 incorporating errata set 2. N. Sakimura; J. Bradley; M. Jones; B. de Medeiros; C. Mortimore. OpenID Foundation. 2023年12月15日. 最終版. URL: https://openid.net/specs/openid-connect-core-1_0.html
[RFC9700]
OAuth 2.0 セキュリティの現行 ベストプラクティス. T. Lodderstedt; J. Bradley; A. Labunets; D. Fett. IETF. 2025年1月. 現行ベストプラクティス. URL: https://www.rfc-editor.org/rfc/rfc9700