借助 Credential Manager 的恢复凭据功能,用户可以在设置新设备后首次打开应用时自动恢复其应用账号并登录。恢复凭证(也称为恢复密钥)是一种可以保存在本地或备份到云服务提供商的凭证,用于在用户的新设备上预配访问权限。
本指南假定您熟悉以下概念:
优势
恢复凭据功能的好处包括:
- 提供顺畅的用户体验:用户无需手动登录,即可立即在新设备上开始使用应用。
- 提高用户留存率并降低支持成本:在设备升级期间自动登录可防止用户流失,并显著降低与废弃账号和密码恢复流程相关的支持成本。
- 增强安全性:静默凭据恢复功能可消除额外的登录界面和手动账号恢复提示,从而降低遭受钓鱼式攻击和凭据盗用攻击的风险。
- 即时互动:用户开始使用新设备后,您就可以立即通过通知或其他提示与用户互动。
- 支持多种身份验证机制:它支持多种身份验证机制,包括:
流程概览
以下部分介绍了每台设备上所需的流程:
在旧设备上
在用户向您的应用进行身份验证后、登录后立即生成恢复密钥,如果用户已登录,则在后续应用启动期间生成恢复密钥。Android 备份服务会自动将生成的恢复密钥存储在设备上,并根据用户的备份设置将其保存在云端。
用户必须满足以下要求,才能备份到云端:
- 已登录 Google 账号。
- 已启用 Android 数据备份。如需了解详情,请参阅数据备份。
- 设置了屏幕解锁机制,例如图案、PIN 码、密码或生物识别。
如果不符合这些条件,系统会抛出 E2eeUnavailableException。
发生这种情况时,请捕获异常并再次调用 createCredential()(使用 isCloudBackupEnabled = false),以便恢复密钥仍保存在本地,用于设备到设备 (D2D) 传输。
在新设备上
当用户设置新设备时,恢复凭证会在设备设置过程中在后台静默运行。用户可以选择从以下选项中恢复数据:
- 从云端备份:如果使用云端备份,恢复密钥会随应用数据一起下载到新设备。
- 使用设备到设备传输:当用户在设置期间直接在旧设备和新设备之间传输数据时,恢复密钥会通过 USB 线或无线 Wi-Fi 设备到设备 (D2D) 传输从旧设备移至新设备。
在新设备上获取恢复密钥后,您可以使用该密钥让用户登录。
将恢复凭证与应用数据备份配对
除了让用户登录之外,您的应用还应转移用户的本地设置、离线草稿和深色主题偏好设置,以实现完整、零阻碍的设备转换:
- 恢复身份验证器账号:使用“凭证恢复”功能以静默方式重新验证账号访问权限。
- 恢复状态和偏好设置:配置自动备份 (
dataExtractionRules),以便在通过云端和数据线进行设备间传输时保留用户偏好设置、本地数据库和应用状态。排除原始身份验证令牌、硬件绑定的 Android Keystore 密文和本地has_synced_restore_credential标记,以免将过时的会话状态复制到新设备。
处理多个系统个人资料和应用账号
实现恢复凭据功能时,请考虑以下有关多账号应用和系统级个人资料的限制。
登录了多个账号的应用
有些应用允许用户在多个活跃账号之间切换(例如,在同一应用中切换个人和工作电子邮件账号)。恢复凭据仅支持每个应用一个账号。如果用户登录了多个账号,您必须仅选择一个账号来创建恢复密钥。通常,这应该是主账号或最近使用的账号。
具有多个系统配置文件的设备
在配置了单独系统资料的设备(例如,具有受管工作资料和个人资料的公司设备)上,恢复密钥可用于在初始设备配置期间设置的主要资料。如果企业 IT 政策在受管理的工作资料中停用了跨设备备份或凭据转移,createCredential() 或 getCredential() 可能不会返回任何凭据,您的应用应回退到标准登录。
限制
搭载 Android 9(API 级别 28)或更高版本且 Google Play 服务版本为 242200000 或更高版本的 Android 手机、可折叠设备和平板电脑支持“恢复凭证”功能。不支持跨设备类别恢复(例如从手机恢复到 Wear OS、Android TV、Android Auto、Android XR 或 ChromeOS);请参阅跨设备规格进行身份验证。
后续步骤
- 实现恢复凭据:使用 Credential Manager 在 Android 应用中创建、检索和清除恢复密钥。
- 测试恢复凭证:在 Android Studio 中或通过自动化 JUnit 5 备份测试,验证云端和设备到设备恢复流程。
- “恢复凭证”Android 技能:使用 Android CLI 技能引导编码智能体完成两层“恢复凭证”集成。