1. 引言
本节为非规范性内容。
WebAuthn 依赖方(RP)目前缺少一种方式来 以编程方式声明它们支持通行密钥,以及用户 可以在何处为该服务创建通行密钥、在何处可以管理该服务的现有 通行密钥。通行密钥也可用于登录之外的其他功能,例如 签名和加密。 通过提出一个定义一组通行密钥专用端点的知名 URL,本规范 使 WebAuthn 客户端和凭据管理器(认证器) 能够直接链接到特定工作流和信息性端点,而不是让用户必须深入 其账户设置和帮助页面中查找。
2. 基础设施
本规范依赖 Infra 标准。[INFRA]
本规范使用 Fetch、HTML、HTTP 和 URL 标准中的术语。[FETCH] [HTML] [HTTP-SEMANTICS] [URL]
3. 通行密钥端点 URL
为了声明支持通行密钥和/或提供用于通行密钥创建与管理的直接端点,
依赖方必须在如下路径托管一个 JSON 文档:根据
[WELL-KNOWN],
将字符串 .well-known/passkey-endpoints 与 https 方案和依赖方标识符连接而成。
不得返回重定向。
RP ID
"example.com" 的通行密钥端点
URL 是 "https://example.com/.well-known/passkey-endpoints"。
3.1. 服务器响应
此上下文中的服务器是支持通行密钥的 WebAuthn 依赖方(RP)。
成功响应必须使用 200 OK HTTP 状态码,并使用
application/json 内容类型返回一个 JSON 对象。
返回的 JSON 对象可以包含以下定义的任意成员。
- enroll
-
此可选成员包含一个指向用户账户通行密钥创建页面的直接 URL
- manage
-
此可选成员包含一个指向用户账户通行密钥管理页面的直接 URL
- prfUsageDetails
-
此可选成员包含一个信息性页面的 URL,该页面描述 RP 如何使用 WebAuthn 伪随机函数扩展(PRF)。
HTTP / 1.1 200 OK Content-Type : application/json { "enroll" : "https://example.com/account/manage/passkeys/create" , "manage" : "https://example.com/account/manage/passkeys" , "prfUsageDetails" : "https://example.com/help/passkeys#encryption" }
可以返回一个空 JSON 对象,以表示支持通行密钥,但不声明具体端点。
3.2. 客户端处理
此上下文中的客户端可以是 WebAuthn WebAuthn 客户端,也可以是凭据管理器(认证器)。
给定通行密钥的依赖方标识符,通过运行以下步骤生成通行密钥端点 URL:
-
令 url 为一个新的
URL, 其值设置如下: -
返回 url。
RP ID
"example.com" 的通行密钥
端点 URL 是
"https://example.com/.well-known/passkey-endpoints"。
4. WebAuthn 客户端和凭据管理器的使用
本节为非规范性内容。
enroll
通行密钥注册通常由 RP 的业务逻辑和会话上下文驱动。有时它可能在 用户成功使用密码登录之后或经历密码重置流程之后发生,其他时候则发生在用户访问 专用的“通行密钥创建”页面时。
这些通行密钥创建入口点可能难以被用户找到,因为它们通常深藏在 账户设置或帮助页面之中。
当此成员存在时的示例用法:
-
凭据管理器可以在给定账户条目中显示“可升级通行密钥”按钮, 将用户直接带到其默认浏览器中的 RP 通行密钥创建页面。
-
凭据管理器可以在检测到用户使用密码登录后,向用户显示通知, 从而提供通行密钥升级流程;当用户点击该通知时,会将用户直接带到 其默认浏览器中的 RP 通行密钥创建页面。
-
WebAuthn 客户端可以在检测到用户使用密码登录后,向用户显示通知, 从而提供通行密钥升级流程;当用户点击该通知时,会将用户直接带到 RP 的通行密钥创建页面。
manage
凭据管理通常深藏在账户设置中,这可能难以被用户找到。
当此成员存在时,凭据管理器可以显示指向 RP 通行密钥(或 通用凭据管理)页面的直接链接。
prfUsageDetails
某些依赖方(RP)使用 WebAuthn 伪随机 函数(PRF)扩展来签名或加密用户数据。由于通行密钥主要设计用于 认证,用户可能不知道删除启用 PRF 的通行密钥可能会影响其保存的数据 或其他功能。
利用 PRF 的 RP 应提供一个专用信息性页面,详细说明其通行密钥如何用于
认证之外的用途,以及删除的影响。该页面的 URL 应为
prfUsageDetails 键的值。
当此成员存在时,凭据管理器应在通行密钥删除 流程中显示警告,包括指向 RP 信息性页面的链接。
5. IANA 考虑事项
5.1.
passkey-endpoints 知名 URI
本文档定义了“.well-known”URI passkey-endpoints。
此注册将提交给 IESG 进行审查、批准,并使用
[WELL-KNOWN] 中定义的
模板向 IANA 注册,如下所示:
- URI 后缀
-
passkey-endpoints
- 变更控制者
-
W3C
- 规范文档
-
本文档是相关规范。(参见 § 3.1 服务器响应)
- 相关信息:
-
无。
致谢
感谢 Arnar Birgisson、Rew Islam、Adam Langley、René Léveillé、Matthew Miller、Ricky Mondello 和 Dan Veditz 对本提案提供的反馈。