在各种设备类型上进行身份验证

Credential Manager 可简化整个 Android 生态系统中的身份验证流程。它为用户提供一致的体验,并为开发者提供统一的 API 界面,以便使用通行密钥、密码和联合登录机制(如“使用 Google 账号登录”)。虽然核心编程接口在不同类型的设备上保持一致,但每种类型的设备都有独特的界面和用户体验注意事项。如需成功实现,您需要根据每种设备的特定输入法、屏幕尺寸和用户情境调整应用的身份验证流程。

本指南概述了如何在不同的 Android 设备规格上实现 Credential Manager,重点介绍了行动要点,并提供了指向更详细文档的链接。

移动设备

移动设备(包括手机、平板电脑和可折叠设备)是 Android 开发中最常见的目标。标准 Credential Manager 实现非常适合这些设备,这些设备通常具有触摸屏和设备端键盘。这种类型的设备上的用户体验是您针对其他设备进行调整的基准。身份验证流程应适合设备类型,并充分利用设备屏幕空间和输入法的功能。

Wear OS

Wear OS 设备的特点是屏幕小,设备上输入有限。Credential Manager 的通行密钥实现为用户提供了一个安全的环境来登录应用,无需连接配对的手机,也无需记住密码。

Wear OS 的 API 与移动设备相同,因此您可以重复使用现有的移动设备集成。除了通行密钥、“使用 Google 账号登录”和密码(通过 Credential Manager)之外,您还可以使用其他身份验证方法,包括数据层令牌共享、OAuth 或现有解决方案。在您将用户迁移到 Credential Manager 时,这些方法可用作备用方案;对于数据层令牌共享,这些方法可用作长期解决方案。

将 Credential Manager 用于 Wear OS 时,必须满足以下要求:

  • 最低 API 级别:minSdkVersion 33 或更高版本
    • 包括对密码、通行密钥和“使用 Google 账号登录”的支持
  • GMS 版本:与移动应用的要求相同

Wear OS 设备上的用户界面如下所示:

Wear OS 上显示为首选身份验证方法的通行密钥登录界面。
图 1a.通行密钥。
Wear OS 用户可用的通行密钥、密码和“使用 Google 账号登录”选项。
图 1b.通行密钥、密码和“使用 Google 账号登录”。

如需详细的实现指南和代码示例,请参阅以下资源:

限制

在 Wear OS 上使用 Credential Manager 时,存在以下限制:

Android XR

借助 Android XR(包括虚拟现实和增强现实),应用可在 3D 空间中呈现。用户输入与其他类型的设备上的输入截然不同,依赖于手势等自然输入。

为 XR 调整 Credential Manager 意味着需要重新思考 3D 空间中的身份验证界面(无论是使用通行密钥、密码还是联合登录方法)。例如,身份验证提示会显示在浮动面板中,用户可以使用手势进行选择。您还需要考虑目标 XR 设备的任何特定硬件或软件前提条件。

一个关键的设计挑战是在 VR 或 AR 环境中创建直观且安全的身份验证体验。您还必须考虑如何在多用户 XR 场景中管理身份,因为不同的人可能会使用同一设备。

将 Credential Manager 用于 Android XR 时,必须满足以下要求:

  • 最低 API 级别:minSdkVersion 34 或更高版本
  • GMS 版本:与移动应用的要求相同
  • 模拟器:
    • 最低模拟器系统映像:
      • macOS:Google Play XR ARM 64 v8a 系统映像修订版本 7
      • Windows:Google Play XR Intel x86_64 Atom 系统映像修订版本 7
    • 高于 35.6.11 稳定版的模拟器版本

XR 上的登录体验可能如下所示:

Android XR 中浮动 3D 面板内显示的 Credential Manager 登录提示。
图 2.XR 中的 Credential Manager 界面。

XR 不支持的流程

Android XR 中的 Credential Manager 不支持需要另一设备扫描二维码的身份验证流程。在扩展现实头戴设备上进行登录流程期间以及使用模拟器进行测试时,可以观察到这一点。

如需详细了解 XR,请参阅 Android XR。

Android TV

Android TV 设备通常是共用设备,用户会从远处观看,并使用方向键遥控器进行导航。在这种环境下,用户可能难以输入用户名和密码。Credential Manager 通过支持“使用 Google 账号登录”、已保存的密码和跨设备通行密钥,简化了 Android TV 上的身份验证流程。由于共享 TV 上通常存在多个 Google 个人资料,因此 Credential Manager 会适应这种共用设置,通过提取并显示设备上所有可用的凭据,而不是仅将选择限制为当前活跃的账号,来适应这种共用设置。

Android TV 上的 Credential Manager 登录提示,其中显示了已保存的“使用 Google 账号登录”账号和密码,以及使用通行密钥的选项。
图 3.Android TV 上的 Credential Manager 界面,显示了“使用 Google 账号登录”、已保存的密码和通行密钥选项。

这种共用性质还决定了通行密钥的处理方式。由于电视没有个人锁屏知识因子 (LSKF),因此通行密钥不会直接存储在电视上或在电视上创建。相反,通行密钥身份验证利用了跨设备混合流程,即在电视上显示二维码,用户使用移动设备扫描该二维码以完成生物识别验证。

如果您将 isAutoSelectAllowed = true 设置为 true,则可以在 Google TV 上实现无点击流程,但前提是只有一项匹配的凭据可用。系统仍会显示原生 TV 底部操作表,其中会显示用户的账号确认信息。如果用户未取消,系统会自动返回凭据,而无需远程点击。如果有多个匹配的凭据,系统不会自动选择,而是会提示用户进行选择。

如果您的移动应用和 TV 应用使用完全相同的 Android 软件包名称和签名密钥,Google 密码管理工具会将它们识别为相同的应用身份。 因此,在移动设备上保存的密码可以直接在 TV 上提供,而无需配置 Digital Asset Links (asset_statements)。只有在跨边界共享凭据时(例如在应用和网站之间,或在具有不同软件包名称的应用之间),才需要 Digital Asset Links。

将 Credential Manager 用于 Android TV 时,必须满足以下要求:

  • 最低 API 级别: Android 14(API 级别 34,minSdkVersion 34)或更高版本
  • GMS 版本: 2026W30 或更高版本
  • 通行密钥硬件: 需要配备摄像头和蓝牙的辅助移动设备,以便扫描二维码并完成 FIDO 混合流程

限制

由于 Android TV 是共用设备,因此在此平台上使用 Credential Manager 时存在以下有意限制,以保护用户隐私和安全:

  • 无法在本地创建或存储通行密钥: 通行密钥无法直接在电视上创建或存储。由于不支持本地凭据,因此请勿在请求中将 preferImmediatelyAvailableCredentials 设置为 true;这样做会过滤掉跨设备通行密钥,并且无法返回凭据。
  • 没有第三方凭据提供程序: Android TV 不支持自动填充,因此第三方密码管理工具在此平台上不可用。 用户必须使用 Google 密码管理工具。
  • 没有恢复凭据: Android TV 不支持使用 “关于恢复凭据”自动登录新设备。

如需详细了解 TV 开发,请参阅 Android TV 概览。

Android Automotive OS

Android Automotive OS (AAOS) 设备是集成到车辆中的共用系统。为 AAOS 调整 Credential Manager 需要支持安全身份验证(通常在车辆停放时)并适应共享设备上的多个用户个人资料。

如果您将针对大屏幕或平板电脑优化的应用引入汽车,并且您的应用已在移动设备或平板电脑上支持 Credential Manager 和通行密钥,则该应用可在 Android Automotive OS 上运行,而无需更改身份验证流程。

Android Automotive OS 上的身份验证支持以下方法:

  • 通行密钥(跨设备混合流程): 用户可以通过跨设备流程使用现有通行密钥进行身份验证。系统会在车载屏幕上显示一个二维码,用户可以使用移动设备扫描该二维码。由于生物识别和屏幕锁定验证是在用户的手机上进行的,因此用户无需在车载显示屏上配置屏幕锁定。
  • 使用 Google 账号登录: 直接在车载显示屏上显示原生“使用 Google 账号登录”屏幕。
  • 已保存的密码: 用户可以从 Google 密码管理工具中检索已保存的密码,以便登录,而无需在车载屏幕上手动输入凭据。
Android Automotive OS 中车载屏幕上显示的 Credential Manager 通行密钥提示。
图 5.Android Automotive OS 上的 Credential Manager 通行密钥提示。

Android Automotive OS 会按个人资料管理会话和凭据,从而将不同个人资料(例如个人资料 A、个人资料 B 或访客个人资料)的用户专用会话数据隔离开。

将 Credential Manager 用于 Android Automotive OS 时,必须满足以下要求:

  • 最低 API 级别: Android 9(API 级别 28,minSdkVersion 28)或更高版本。跨设备通行密钥检索需要 Android 14(API 级别 34)或更高版本。
  • GMS 版本: 与移动应用的要求相同。

测试限制

测试通行密钥需要将搭载 Android Automotive OS build 的实体设备作为主要界面。如需了解设置说明,请参阅使用 Android Automotive OS 在 Pixel Tablet 上进行测试。模拟器不能用于通行密钥测试,因为它们不支持 FIDO 混合流程所需的低功耗蓝牙 (BLE)。

限制和不支持的流程

在 Android Automotive OS 上使用 Credential Manager 时,存在以下限制:

  • 无法在本地存储或检索通行密钥: 由于车辆是共用设备,因此不支持直接在本地检索通行密钥。将通行密钥直接同步到车辆存在安全风险,因此必须通过跨设备混合流程使用通行密钥。
  • 不支持立即可用的凭据: 如果您的应用请求通行密钥并将 preferImmediatelyAvailableCredentials 设置为 true,则汽车界面会立即终止并抛出 NoCredentialException。 请为此场景提供适当的回退用户体验。
  • 没有第三方凭据提供程序: Android Automotive OS 不支持第三方密码管理工具。用户必须使用 Google 密码管理工具或跨设备混合流程进行身份验证。
  • 无法创建存储的密码: 该 API 不支持直接从汽车界面创建和保存新的存储密码。凭据创建仅限于使用 FIDO 混合流程创建新的通行密钥。

如需详细了解 Automotive OS 开发,请参阅 Android Automotive OS 概览。

其他资源