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 (拉取请求, 新建议题, 未关闭议题)

摘要

本文档定义了一个用于链接式 Web 存储(LWS)协议的认证套件,使能够签署其自身身份令牌的客户端 能够与 LWS 集成。

本文档状态

本节描述本文档在发布时的状态。当前 W3C 出版物列表以及本技术报告的最新修订版可在 W3C 标准与草案 索引中找到。

这是一项非官方提案。

本文档由 链接式 Web 存储工作组 作为工作草案发布,并使用 推荐标准 轨道

作为 工作草案发布并不意味着 W3C 及其成员的认可。

这是一份草案文档,可能会在任何时候被其他 文档更新、替换或废止。除非作为正在进行的工作, 否则不宜引用本文档。

本文档由一个在 W3C 专利 政策下运作的小组制作。 W3C 维护一份 与该小组交付物相关的任何专利披露的公开列表; 该页面还包含 披露专利的说明。任何实际 知晓某项专利,并认为该专利包含 必要权利要求 的个人,必须按照 W3C 专利政策第 6 节 披露该信息。

本文档受 2025年8月18日 W3C 流程文档管辖。

1. 引言

自签发身份对于应用代表自身行事的情形非常重要。这包括 自主机器人以及服务器端脚本等。 在这些情况下,代理能够 安全地管理密钥对的私有部分,并使用它来生成已签名的 JSON Web Token (JWT)。 本规范描述了此类代理如何生成可与链接式 Web 存储一起使用的认证凭据

2. 一致性

除标记为非规范性的章节外,本规范中的所有编写指南、图表、示例和注释 均为非规范性内容。本规范中的其他所有内容均为规范性内容。

本文档中的关键词 MAYMUSTMUST 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] 定义。

术语“agent”、“authentication credential”和“authentication suite”由 Linked Web Storage Protocol [LWS10-CORE] 定义

4. 认证凭据 序列化

自签发的认证凭据 被序列化为已签名的 JSON Web Token (JWT)。为了将 JWT 用作 LWS 认证凭据, 适用以下附加要求。

JWT MUST NOT 使用“none”作为签名算法。

JWT MUST 使用 sub(subject)声明作为 LWS 主体 标识符。

JWT MUST 使用 iss(issuer)声明作为 LWS 签发者标识符。

JWT MUST 使用 client_id(client ID)声明作为 LWS 客户端 标识符。

subissclient_id 声明 MUST 全部 使用相同的 URI 值。

ID Token 中的任何受众限制 MUST 使用 aud(audience) 声明。aud 声明 MUST 包含目标授权服务器。

JWT MUST 包含 exp(expiration)声明,指示令牌 过期的时间。

JWT MUST 包含 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 认证凭据, 验证者与签发方之间必须存在信任关系。

在不存在预先存在的信任关系时,验证者 MUST 解引用 认证凭据中的 sub(subject)声明。 生成的资源 MUST 格式化为有效的受控标识符文档 [CID-1.0],并具有等于 主体标识符的 id 值。

验证者 MUST 拒绝任何使用等于“none”的 alg 头部参数的令牌。

验证者 MUST 验证由认证凭据 数据模型描述的所有声明。

验证者 MUST 使用已签名 JWT 头部中的 kid(key id)值,从主体的受控标识符文档中识别一种验证方法。 此过程在 [CID-1.0] 第 3.3 节中描述。 使用从受控标识符文档中选择的验证方法,JWT 的签名 MUST 按照 [RFC7515] 第 5.2 节中的描述进行验证。

验证者 MUST 确保当前时间早于 exp 声明所表示的时间。实现者 MAY 提供一些小的宽限时间, 以考虑时钟偏差。

下面包含一个受控标识符文档示例。

{
    "@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 MUST 在与授权服务器交互时使用 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]
Key words for use in RFCs to Indicate Requirement Levels. S. Bradner. IETF. 1997年3月. 当前最佳实践. URL: https://www.rfc-editor.org/rfc/rfc2119
[RFC6749]
The OAuth 2.0 Authorization Framework. 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]
Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words. 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]
Best Current Practice for OAuth 2.0 Security. T. Lodderstedt; J. Bradley; A. Labunets; D. Fett. IETF. 2025年1月. 当前最佳实践. URL: https://www.rfc-editor.org/rfc/rfc9700