
-
通行密钥的新功能
了解 iOS、iPadOS、macOS 和 visionOS 26 在通行密钥方面的增强功能。我们将探索的重要更新包括:简化注册流程的全新账户创建 API、确保通行密钥保持最新的措施、通过自动通行密钥升级和通行密钥管理端点驱动通行密钥升级的新方式,以及通行密钥的安全导入/导出。了解这些改进如何提升用户体验和安全性,以及如何在 App 中实施这些更新以便提供更流畅、更安全的身份验证体验。为了充分从这个讲座中获益,请先观看 WWDC22 讲座“通行密钥简介”。
章节
- 0:00 - 简介
- 0:58 - 通行密钥采用之路
- 3:30 - 账户创建 API
- 10:48 - 确保通行密钥保持最新
- 14:41 - 通行密钥自动更新
- 16:59 - 通行密钥管理端点
- 19:12 - 导入及导出通行密钥
资源
- ASCredentialExportManager
- ASCredentialProviderViewController
- Performing fast account creation with passkeys
相关视频
WWDC24
WWDC22
-
搜索此视频…
大家好 我是 Authentication Experience 团队的工程师 Andrew 让登录变得简单、快捷且安全 是我们非常重视的事情
密码是导致许多 登录问题和账户安全问题的 根本原因 行业一直在努力 从源头上解决这些问题 方法是取消在线账户对密码的使用 转而使用通行密钥 通行密钥能够从根本上解决 密码在安全性和易用性方面的问题 包括消除如今众所周知的 网络钓鱼攻击 同时提供令人愉悦的登录体验
你正在观看这个视频 就说明 你也是众多努力实现 这一点的业内人士之一 我们都在朝着用通行密钥取代密码 这一重要的总体目标努力
通行密钥之旅是实现 这一目标的必经之路 也是一次全行业转型 旨在完全使用 不会受到网络钓鱼攻击的认证因素 来确保身份验证的安全性 通行密钥推行之旅分为几个阶段 在采用通行密钥之前 许多账户的创建仅仅依赖于那些 易受网络钓鱼攻击的认证因素 比如密码或是通过短信或电子邮件 发送的一次性验证码
这场旅程最初是将通行密钥这样 不会受到网络钓鱼攻击的方法 添加为额外的登录方法 如今行业内大多数企业 都处在这个阶段 目标是让所有账户 都不存在易受 网络钓鱼攻击的认证因素 而为了让所有人达到这一状态 行业采用的方法就是通行密钥 整个行业目前呈现出很棒的势头 用户采用率不断上升 各种服务的支持力度也越来越大 2025 年 通行密钥背后的 标准机构 FIDO 联盟 进行了一项研究 发现 69% 的 受访者拥有至少一个通行密钥
Google 发布的数据显示 用户使用通行密钥 登录账户的成功率 比使用密码登录账户的 成功率高四倍 TikTok 观察到 使用通行密钥的用户 登录成功率高达 97% 纵观整个行业 使用通行密钥 实现这样的登录成功率 已是司空见惯 但使用密码 做到这一点的情况却是闻所未闻
不断上升的采用率和出色的成功率 表明通行密钥之旅取得了显著进展 iOS、iPadOS、macOS 和 visionOS 26 在通行密钥的基础上 推出了诸多全新增强功能 让用户能够更便捷地 在各种 App 和网站上 使用通行密钥 我将介绍五项重要更新 首先是全新账户创建 API 它让你能够非常方便快捷地 创建新账户 并且从一开始就提供了通行密钥
然后 我将介绍如何 及时更新通行密钥 并演示如何将账户更改 与凭证管理器同步
接下来介绍自动通行密钥升级 这项功能可以将通行密钥 无缝添加到基于密码的现有账户中 之后介绍通行密钥管理端点 这项功能可以直接在凭证管理器内 展示你的服务对通行密钥的采用情况
最后介绍通行密钥的导入和导出 这是 Apple 生态系统 取得的一项重要进步 为用户提供了更大的灵活性 并将对通行密钥的控制权交给用户
首先介绍全新账户创建 API 不同于基于密码的传统注册方式 通行密钥的设置过程 既不冗长 也不复杂 这种注册方式简单快捷 让用户倍感轻松省力 通行密钥无需用户创建复杂密码 然后努力回想密码
让登录变得轻松快捷 还能抵御网络钓鱼攻击 账户创建 API 和最新操作系统版本 可以让注册体验变得愉悦、快捷 并且从根本上来说也更加安全
我要在我的 iPhone 上 使用名为 Shiny 的 App 进行演示 这个 App 能够每天推送 一张可爱的图片
和任何 App 新用户一样 第一步是注册 这是采用账户创建 API 之前的传统方式 首先要使用我的邮箱 创建一个新账户
系统立即让我填写表单 要填写的第一项就是电子邮件地址 幸好 自动填充功能 在这里帮了我一把 电子邮件地址就这样填好了 接下来填写我的名字和姓氏
当然 还有令人头疼的密码 我会执行理想情况下的操作 使用自动生成的强密码
最后 轻点“Continue” 这样就完成注册了 可以看到一张可爱的图片 真可爱 接下来 我要采用账户创建 API 再次尝试完成这个过程 我将以类似的方式 使用我的邮箱创建一个新账户
但请注意 系统不会显示多步骤表单 而是会显示一个表单 其中显示了 Shiny 请求提供的信息具体有哪些 在这个示例中 这些信息包括 我的姓名和电子邮件地址 以及将会存储在 “密码”App 中的通行密钥 最棒的是 所有这些信息 都为我预先填充好了 这就是由账户创建 API 提供支持的全新简化流程 我分享的信息是可编辑的 轻点某个栏位即可显示一个选择器 其中提供了一些建议 我可以在不同的建议内容之间切换 也可以手动输入内容 我对这里的默认内容很满意 所以轻点“Continue” 完成面容 ID 认证 这样就可以了 我完成了注册并进入 Shiny 这个过程远比传统方式 更快捷、更简单也更安全
登录操作也同样轻松
如果我稍后拿起 iPad 在上面首次启动 Shiny
我会立即收到登录提示 因为这个 App 被设置为 在启动时立即检查 是否已经存在凭证 我之前创建的通行密钥 可以在我的所有设备上使用 轻点“Continue”完成面容 ID 认证 然后我就进入 App 了 就是这么简单! 这种体验适用于 iOS、iPadOS、 macOS 和 visionOS 上的 App 并且可以与“密码”App 和第三方凭证管理器配合使用
接下来 我将介绍为这种 注册体验提供支持的实现
这里的函数显示了 账户创建过程的核心步骤 首先 对新的账户创建 提供程序进行初始化 接下来 使用这个提供程序 创建通行密钥注册请求 在这个方法中指定关键详细信息 第一个参数是 acceptedContactIdentifiers 这个参数会告诉系统 App 支持哪种账户标识符 App 只会收到选定的 这一个标识符 用于创建账户 也用作通行密钥的用户名标签 shouldRequestName 决定了 是否要请求用户的姓名 仅当创建账户过程中必须提供姓名时 才应将这个参数设置为 true 接下来的三个参数 与将要创建的通行密钥有关 这些参数与标准的 通行密钥注册方法相对应 因此 需要提供的数据 与你为这个请求提供的数据相同
用于注册通行密钥的 relyingPartyIdentifier 通常是一个域名 一次性使用的 challenge 它是从你的服务器获取的 需要由创建的通行密钥进行签名 userID 是你为账户创建的 稳定的唯一标识符 接下来 将一个实例赋给 ASAuthorizationController 在 SwiftUI 视图中 可以使用 Environment 属性包装器来访问它 然后 执行请求 如果用户成功完成注册流程 你就会获得返回的 ASAuthorizationResult 对它进行解包 现在就可以 访问联系人标识符了 如果请求了姓名 也可以访问姓名 此外 还可以访问通行密钥对象 接着在你的服务器上 创建一个新账户并登录
这样就完成了 实现通行密钥采用的核心过程 如果出了问题 perform 方法就会抛出错误 你可以处理这个错误 以便 在各种情况下都能提供出色的体验 除了标准的 AuthenticationServices 错误之外 还有三个错误需要处理 它们与这个 API 的相关性尤其高 第一个错误是 deviceNotConfiguredForPasskeyCreation 说明设备目前处于 无法创建通行密钥的状态 例如没有设置密码 如果了解到用户暂时 不符合创建通行密钥的条件 可以显示标准注册表单 在 Shiny 中轻点“Use email or phone number”按钮 系统会通过显示自定注册表单 来处理这个错误 下一个错误是 canceled 如果用户关闭了 没填完的注册表单 系统就会抛出这个错误 在这种情况下 可以显示 标准注册表单 如果用户在 Shiny 中 关闭了系统表单 系统会通过显示自定注册表单 来处理这个错误 最后一个错误是 preferSignInWithApple 系统返回这个错误的前提条件 是 App 支持“通过 Apple 登录” 这样设计是为了帮助避免 出现意外的重复账户 如果用户发起了账户创建流程 但在你的服务中已经有了使用 “通过 Apple 登录”功能的账户 那么系统会显示这样的 提醒信息来提醒用户 他们需要做出选择:要么使用 现有的“通过 Apple 登录”账户 要么继续创建新账户 如果使用现有账户 系统就会抛出这个错误 因此 当你收到这个错误时 最佳做法是发起 “通过 Apple 登录”请求 从而显示“通过 Apple 登录”表单 这样就遵循了用户的选择 让他们无需完成额外的轻点操作 即可登录自己的现有账户 对错误的介绍就到这里 还有一种最佳做法 是在 App 启动时 立即提供任何现有账户 帮助引导用户重新登录你的 App 回想一下 iPad 演示 刚启动 App 系统就立即提示我 使用通行密钥登录 我无需思考自己是否已经有了账户 也无需回想自己 上一次是如何登录的 之所以能够实现这一点 是因为 Shiny 使用了组合式的登录请求 并且设置了 preferImmediatelyAvailableCredentials 选项 如果用户的设备上存在 任何可用的账户凭证 无论是来自任何凭证管理器 App 的通行密钥或密码 还是使用“通过 Apple 登录” 的账户 系统都会提供这些凭证 作为登录选项 如果没有任何立即可用的凭证 就不会显示任何用户界面 从而确保登录屏幕不会被打断 要了解如何采用这项功能 请观看 WWDC22 中的“通行密钥简介”视频
这就是账户创建 API 这项全新功能 让注册过程变得轻松又安全
创建账户后 确保凭证管理器中的 通行密钥信息 始终准确无误 有助于保持顺畅的体验 这就引出了下一个主题: 及时更新通行密钥 账户不是静止不变的 用户会更新用户名或 电子邮件地址等个人信息 并且可能会撤销通行密钥 如果在登录过程中 凭证管理器 显示过时的信息 可能会造成困惑 并导致登录过程变慢 或者导致用户无法登录你的服务 我们推出了一个新的 API 集合 让你的 App 或网站能够 向凭证管理器发出信号 表明账户发生了更改 采用这些信号 API 可以确保条目的准确性 从而确保登录流程快捷、可靠 并且正常运行
接下来介绍一下这在 Shiny 中 是如何实现的假设我刚从大学毕业 想要将我的账户所使用的邮箱 从原来的学生邮箱换成个人邮箱
我在 App 中进入“Settings” 轻点“Email”并输入新邮箱
然后存储
刚完成这个操作 我的凭证管理器 也就是“密码”App 就立即 发送通知 告诉我用户名已更改
如果我轻点这条通知 “密码”就会对我进行认证 然后显示账户的详细信息
显然 用户名反映了新的个人邮箱 现在 凭据管理器 与 App 后端的内容相一致 真不错! 这是通过适用于 App 和网页的新 API 实现的 对于 App 新的 ASCredentialUpdater 类 提供了报告特定凭证更改的方法 对于 Web 等效方法是 Safari 浏览器 19 和其他浏览器 支持的 WebAuthn 标准中的内容
第一个信号用于更改用户名 就像在这次演示中一样 如果用户更改了用户名、 电子邮件地址 或是为账户 显示的任何标识 就使用 reportPublicKeyCredentialUpdate 方法告知凭证管理器 这可以确保在登录过程中 显示的账户标识 始终能够及时更新 以免造成任何困惑 请注意 通行密钥上的用户名 是仅限本地使用的标识 在认证过程中不会返回到服务器
对于 Web 在 PublicKeyCredential 上 使用 signalCurrentUserDetails 方法来以完成相同的操作
接下来是撤销通行密钥 许多 App 和网站都提供了 通行密钥管理页面 用户可以在这个页面上 撤销单个通行密钥 或创建新的通行密钥 每当用户撤销了通行密钥时 就调用 reportAllAcceptedPublicKeyCredentials 方法 指定仍然有效的凭证 ID 这样操作后 凭证管理器就会 删除没有包含在你提供的 通行密钥集中的通行密钥 这可以防止在用户在登录时 提供任何无效的通行密钥 你也可以定期调用这个方法 作为账户健康检查 如果发生了变化 这将有助于确保 凭证管理器及时了解情况
你也可以使用 signalAllAcceptedCredentials 方法 在网页上执行相同的操作
最终 最安全的账户 是那些根本没有密码的账户 使用全新账户创建 API 创建的账户 根本没有密码 所以自始至终都很安全
对于现有账户 如果不再需要密码 现在可以告知凭证管理器 reportUnusedPasswordCredential API 会发出信号 表明账户已经迈出了 通行密钥之旅的最后一步 不再使用密码了
当然 所有凭证管理器 都可以参与对这些信号的处理 我们可以使用新的 API 侦听这些更新信号 并确保所管理的凭证及时更新 如需了解更多信息 请查看开发者文档 了解 ASCredentialProviderViewController 上的报告方法 因此 这些新的 API 有助于 保持凭证的准确性 接下来 我将重点介绍 如何鼓励用户采用通行密钥 尤其是对于那些仍在 使用密码登录的用户 自动通行密钥升级可以将通行密钥 无缝添加到基于密码的现有账户中 你的 App 或网站可以 在用户使用密码登录后 立即创建一个通行密钥 整个过程顺畅无阻 我来展示一下 回到 Shiny 中 假设我 仍然使用密码并且想要登录 我会自动填充用户名 和密码 然后轻点“Sign in” 这样就完成登录了 但由于 Shiny 采用了 自动通行密钥升级 现在发生的情况是这样的 我收到一条通知 提示已创建通行密钥 没有追加销售屏幕 也没有出现中断 而是实现了无缝转换 解锁了更简单、更安全的登录体验 需要注意的是 我刚才使用的密码 仍然可以正常使用 这个过程只是添加了通行密钥 将它作为一种安全的登录方式 这是实现自动通行密钥升级的代码 用户使用密码登录后 你可以访问他们的账户详细信息 首先要确保账户还没有通行密钥 如果没有 就创建 通行密钥注册请求 方法和创建通行密钥时一样 将 requestStyle 设置为 conditional 即可启用自动通行密钥升级 完成这项设置后 在你执行请求之后 系统和凭证管理器 会在后台运行检查 检查内容包括 验证凭证管理器是否可用 用户刚才是否使用了 这个账户的密码 以及是否对设备进行了 使用通行密钥所需的设置 如果满足所有先决条件 系统就会创建通行密钥并显示通知 App 会收到需要存储的 通行密钥对象 整个过程不会打断或妨碍用户 如果不满足任何先决条件 那么调用会以静默方式失败 系统不会显示任何用户界面 也不需要进行特定的错误处理 每当还没有通行密钥的用户 使用密码登录时 你的 App 都应该尝试进行升级
我们还提供了等效 Web API 要进一步了解自动通行密钥升级 请观看 WWDC24 中的视频 “利用通行密钥升级 和凭证管理器简化登录体验” 自动升级提供了 顺畅无阻的理想途径
我们还可以锦上添花 采用 知名 URL 作为通行密钥 管理端点 从而能够显示 从凭证管理器 到通行密钥管理页面的直接链接 这是突出显示通行密钥 采用情况的绝佳方式 我来展示一下 这里是“密码”App 我正在查看已存储的一个 Shiny 条目 它仍在使用密码 请注意这个新增的部分 它让我知道 有可用的通行密钥升级 轻点“Add Passkey”按钮 即可打开网站 直接跳转到指定的 通行密钥注册页面
实现这个标准流程会创建 从凭证管理器到 通行密钥管理页面的直接链接 这样可以实现另一种升级方式 让用户能够直接 从凭证管理器进行升级 这种方式建立在标准流程的基础上 因此适用于所有 参与处理的凭证管理器
为了支持这项功能 在服务器上的知名通行密钥 端点路径上调查 JSON 响应 响应必须直接通过这个路径发送 而不能通过重定向发送
提供这个响应时 一并提供 “200 OK”状态代码 Content-Type 标头 application/json
响应内容是一个 JSON 字典 指向你网站上的相关页面
enroll 是用户用来 为账户添加通行密钥的 URL 密码 App 中的“Add Passkey” 按钮会链接到它 manage 是用户用来 管理现有通行密钥的 URL 类似于更改密码页面 用户可以在这里撤销现有通行密钥 或添加新的通行密钥
它们都是可选栏位 但最好同时包含这两个栏位 这些 URL 务必要正确处理 没有通过经认证的会话 访问 App 的用户 如果登录是必要的 那就先进行认证 然后重定向回最初请求的 URL
此外 还要确保这个页面可以访问 并提供给所有用户代理 并非只有网页浏览器 才会请求这个页面 凭证管理器等 App 也会请求这个页面
通过为通行密钥管理端点 实现知名 URL 你可以为凭证管理器提供提示 来引导用户为你的服务 采用通行密钥
接下来 我要介绍 通行密钥的导入和导出
用户拥有自己的凭证 并且应该能够在所选位置 灵活管理这些凭证 因此 我很高兴地告诉大家 通行密钥现在可以安全地 在 iOS、iPadOS、macOS 和 visionOS 26 上 参与管理的凭证管理器 App 之间安全地迁移 这样 用户可以 更好地掌控自己的数据 还可以选择要使用的凭证管理器
这个新流程与传统的凭证导出方法 有着根本区别 并且比传统方法更安全 传统方法往往涉及 导出未经加密的 CSV 或 JSON 文件 然后手动 将这些文件导入到另一个 App 中 迁移流程由用户发起 直接在参与管理的 凭证管理器 App 之间进行 并通过面容 ID 等本地认证手段 获得安全保障 这种传输使用的数据架构 由我们与众多 FIDO 联盟成员 合作构建 能够对通行密钥、密码、 验证码等数据类型 所使用的数据格式进行标准化处理 系统提供了在不同 App 之间 移动数据的安全机制 不会在磁盘上创建不安全的文件 从而杜绝了凭证通过 导出的文件发生泄露的风险 这是一种现代化 且安全的凭证迁移方式
App 和网站无需执行任何操作 即可满足凭证迁移的要求 因为迁移流程直接在 凭证管理器之间进行 现有的通行密钥保持不变 并将继续无缝运行 对于想要支持凭证迁移的 凭证管理器 App 请参考 ASCredentialExportManager 和 ASCredentialImportManager 的开发者文档
通行密钥会不断进步 提供更强大的安全性 和更简单的体验 全新操作系统版本让通行密钥的 创建、使用和发现变得更轻松 我们在这场旅程中携手前行 共同奔赴没有密码的未来 大家对这些功能的采用 对于让所有人在现实中 达到这一状态至关重要 因此 为了帮助大家持续提供 最出色的认证体验 下面我们来看看后续步骤 首先 采用账户创建 API 来实现安全快速的用户引导 接下来 使用信号 API 及时更新 通行密钥 从而让凭证管理器 及时了解账户变更 比如 用户名更新或通行密钥移除 然后 启用自动通行密钥升级 实现从密码到通行密钥的无缝转换 最后 通过从你的网站 提供通行密钥管理端点 让凭证管理器能够 发现通行密钥更新 以上就是通行密钥的新增功能 谢谢观看!
-
-
6:33 - Account creation
// Account creation @Environment(\.authorizationController) var authorizationController func performPasskeySignUp() async throws { let provider = ASAuthorizationAccountCreationProvider() let request = provider.createPlatformPublicKeyCredentialRegistrationRequest( acceptedContactIdentifiers: [.email, .phoneNumber], shouldRequestName: true, relyingPartyIdentifier: "example.com", challenge: try await fetchChallenge(), userID: try await fetchUserID() ) do { let result = try await authorizationController.performRequest(request) if case .passkeyAccountCreation(let account) = result { // Register new account on backend } } catch ASAuthorizationError .deviceNotConfiguredForPasskeyCreation { showPasswordSignUpForm = true } catch ASAuthorizationError.canceled { showPasswordSignUpForm = true } catch ASAuthorizationError.preferSignInWithApple { await performSignInWithApple() } catch { ... } }
-
12:30 - Changing the user name
// Changing the user name try await ASCredentialUpdater() .reportPublicKeyCredentialUpdate( relyingPartyIdentifier: "example.com", userHandle: userHandle, newName: "andrew@example.com" )
-
12:58 - Changing the user name
// Changing the user name await PublicKeyCredential.signalCurrentUserDetails({ rpId: "example.com", userId: userHandle, name: "andrew@example.com", displayName: "andrew@example.com" });
-
13:07 - Revoking a passkey
// Revoking a passkey try await ASCredentialUpdater() .reportAllAcceptedPublicKeyCredentials( relyingPartyIdentifier: "example.com", userHandle: userHandle, acceptedCredentialIDs: acceptedCredentialIDs )
-
13:46 - Revoking a passkey
// Revoking a passkey await PublicKeyCredential.signalAllAcceptedCredentials({ rpId: "example.com", userId: userHandle, allAcceptedCredentalIds: acceptedCredentialIds });
-
14:04 - Removing a password
// Removing a password try await ASCredentialUpdater() .reportUnusedPasswordCredential( domain: "example.com", username: "andrew@example.com" )
-
15:36 - Automatic passkey upgrade
// Automatic passkey upgrade func signIn() async throws { let accountDetails = try await signInWithPassword() guard !accountDetails.hasPasskey else { return } let provider = ASAuthorizationPlatformPublicKeyCredentialProvider( relyingPartyIdentifier: "example.com") let request = provider.createCredentialRegistrationRequest( challenge: try await fetchChallenge(), name: accountDetails.userName, userID: accountDetails.userID, requestStyle: .conditional ) do { let passkey = try await authorizationController.performRequest(request) // Save new passkey to the backend } catch { ... } }
-
-
- 0:00 - 简介
整个行业都在努力消除密码,转而采用更安全且更便捷的通行密钥,这种方法可以有效根除网络钓鱼并简化登录过程。
- 0:58 - 通行密钥采用之路
对 iOS、iPadOS、macOS 和 visionOS 的更新简化了通行密钥的创建、管理和升级过程,从而加速了通行密钥的采用。我们的行业正在从易遭受钓鱼攻击的密码和短信/电子邮件验证码,过渡到不易遭受网络钓鱼攻击的通行密钥。许多账户目前都已将通行密钥作为额外的登录方式,但最终目标是彻底消除所有易遭受网络钓鱼攻击的身份验证因素。 通行密钥的采用率正在迅速提升,并且登录成功率也非常高。FIDO 联盟的数据显示,69% 的用户至少拥有一个通行密钥;Google 发现,使用通行密钥登录的成功率是密码的四倍;而 TikTok 的通行密钥登录成功率高达 97%。
- 3:30 - 账户创建 API
全新账户创建 API 彻底改变了 App 的注册流程。这个 API 在 iOS、iPadOS、macOS 和 visionOS 上可用,并可与“密码”App 和第三方凭证管理器配合使用。用户现在可以直接使用通行密钥创建账户,这不仅提升了使用的便捷性,也降低了遭遇网络钓鱼攻击的风险。 使用账户创建 API,注册流程变得非常简单。用户无需填写繁琐的多步骤表单,而是会看到一张预填的表单,其中会清楚显示 App 所需的注册信息,并支持用户自定内容。填写完成后,系统会自动生成一个通行密钥,该密钥存储在“密码”App 中。 通行密钥的优势不仅体现在注册阶段。登录过程同样轻松便捷,且通行密钥会自动在所有设备间同步。账户创建 API 易于采用,并能妥善处理各种潜在错误,即使设备尚未配置通行密钥,或者已有“通过 Apple 登录”的账户,也能提供流畅的注册体验。
- 10:48 - 确保通行密钥保持最新
新的信号 API 使 App 和网站能够在账户信息发生变更 (如用户名、电子邮件地址变更,或通行密钥被撤销) 时,通知凭证管理器。这可确保凭证管理器始终保持最新状态,从而避免混淆和登录问题。 例如,当用户在 App 中更新电子邮件地址时,App 会立即向凭证管理器发出信号,凭证管理器随即会更新其记录。这些 API 支持无密码账户,这是目前最安全的账户类型。当不再需要密码时,这些 API 还会通知凭证管理器,从而提升整体安全性并改善用户体验。
- 14:41 - 通行密钥自动更新
自动通行密钥升级功能可在不增加使用负担的前提下,增强账户安全性,方便用户使用密码登录。在用户成功使用密码登录后,App 和网站可以在后台创建通行密钥。系统会在添加通行密钥后向用户发出通知,从而为后续登录提供一种更简单、更安全的方式。原有密码仍然有效,如果通行密钥尚不存在,则系统将在每次使用密码登录时尝试执行升级过程。
- 16:59 - 通行密钥管理端点
通过实现标准且广为人知的通行密钥管理端点 URL,网站可以将凭证管理器直接链接到其通行密钥注册和管理页面。这种方法简化了通行密钥升级过程,因此,用户可以在其凭证管理器中从密码轻松地切换到通行密钥。服务器返回的 JSON 响应必须包含用于注册和管理的 URL,响应状态代码应为“200 OK”,并且可供所有用户代理访问,包括 App 和网页浏览器。
- 19:12 - 导入及导出通行密钥
现在,通行密钥可以在 iOS、iPadOS、macOS 和 visionOS 26 上参与的凭证管理器 App 之间安全传输。该过程由用户主动发起,并通过如面容 ID 等本地身份验证提供安全保护,从而降低凭证泄露的风险。传输过程采用由 FIDO 联盟制定的标准化数据架构,确保不同 App 之间的兼容性。 你将能够提供最佳的身份验证体验,助力用户迈向更加安全的无密码未来。采用账户创建 API,实现安全且快速的用户引导;使用信号 API 保持通行密钥信息的实时更新;启用自动通行密钥升级功能;并支持通行密钥管理端点。