跳转到主要内容

Passkey

启用 Passkey

Passkey 通过 SDK 门户启用。Android 集成无需任何代码改动——激活完全由平台端处理。

备注

Passkey 目前仅适用于 Android。iOS SDK 不支持此功能。

技术背景:Digital Asset Links(DAL)

Android 上的 Passkey 使用 Digital Asset Links 协议,在客户端的原生应用程序与 Unico 的 Web 域之间建立可验证的安全关联。根据 Android 操作系统的设计,此链接是 Google 移动应用程序中使用 passkey 进行身份验证的必要条件。

安全验证的工作原理

在为 passkey 生成密钥对之前,Android 验证器会将服务器响应中存在的 Relying Party ID(RP ID)与 Digital Asset Links 文件中指定的域名进行核对。若此验证未通过,Passkey 将无法正常工作。

什么是 SHA-256,为什么需要它?

SHA-256 指纹是从应用程序签名证书生成的唯一哈希值,用于标识应用程序的真实性和完整性。

此证书对应于在 Google Play 商店分发前用于签署 APK/AAB 的密钥。需要将此指纹注册到由 Unico 托管、路径为 /.well-known/assetlinks.jsonassetlinks.json 文件中。该文件完全由 Unico 管理,只能通过提交支持工单进行更新。

assetlinks.json 文件的结构

该文件必须包含两个特定权限:

  • delegate_permission/common.handle_all_urls — 用于 Android App Links
  • delegate_permission/common.get_login_creds — 用于在网站和 Android 应用程序之间共享凭据

……以及客户端的包名SHA-256 指纹

备注

SHA-256 必须在两个地方注册:公开的 assetlinks.json 文件和服务器配置(预期来源)。请为所有正在使用的签名配置注册指纹——调试版、发布版以及任何 product flavor——因为每种配置会生成不同的指纹。

如何获取 SHA-256

可以使用 Java Development Kit (JDK) 的 keytool 工具提取 SHA-256 指纹,或直接在 Google Play 控制台的 App Signing 部分(位于 Setup > App integrity 下)查找。

keytool -list -v -keystore <your-keystore.jks> -alias <key-alias>
先决条件摘要

在任何 passkey 操作成功执行之前,必须满足以下条件:

  • 应用程序的包名和 SHA-256 指纹已在 Unico 的 assetlinks.json 文件中注册(提交支持工单以注册或更新指纹)
  • 应用程序的 SHA-256 指纹已在服务器配置(预期来源)中注册
  • 所有正在使用的签名配置(调试版、发布版、product flavor)的指纹均已注册
参考资料