跳转到正文

后端说明

GitHub

您的后端仍需负责标准的 WebAuthn 流程:

  • 生成注册与身份验证的 challenge
  • 验证 attestation 与 assertion 响应
  • 强制执行 relying-party ID 和 challenge 校验
  • 按浏览器流程的相同方式存储凭据与计数器

保持不变的部分

“保持不变的部分”

该插件旨在保留您现有 WebAuthn code 的前端形态。

  • 在 Web 端,它会转发至真实的浏览器 WebAuthn API。
  • 在原生 Capacitor 上,它会返回由原生 passkey API 支持的类浏览器凭据对象。
  • 您的后端可以沿用相同的 challenge 和验证 pipeline。

Android 端的变更

“Android 端的变化”

Android 原生 passkeys 与浏览器的信任模型并不完全相同。

  • 通过 Digital Asset Links,Android 可以与您的网站共享相同的 Relying Party 和凭据生态系统。
  • 字面上的 clientDataJSON.origin value 仍可能与网站 origin 不同。
  • 如果您的服务器拒绝除以下内容以外的任何请求: https://your-domain,即使 passkey 本身有效,Android 原生断言也可能会失败。

在支持 Android 原生 passkey 时,请为同一个 Relying Party 同时允许预期的浏览器 Origin 和 Android 应用 Origin。

这将为您提供:

  • 网站的浏览器支持
  • Capacitor 应用中的原生 passkey 支持
  • 针对同一 Relying-party 域名的统一 passkey 生态系统

如果您的后端已经返回 PublicKeyCredentialCreationOptionsJSON 以及 PublicKeyCredentialRequestOptionsJSON,你也可以直接使用 API 插件,而不是使用浏览器风格的 shim:

import { CapacitorPasskey } from '@capgo/capacitor-passkey';
const registration = await CapacitorPasskey.createCredential({
origin: 'https://signin.example.com',
publicKey: registrationOptionsFromBackend,
});
const authentication = await CapacitorPasskey.getCredential({
origin: 'https://signin.example.com',
publicKey: requestOptionsFromBackend,
});

如果你正在使用 后端说明 用来规划身份验证和账户流程,并将它与 使用 @capgo/capacitor-passkey 在“使用 @capgo/capacitor-passkey”中了解原生能力, @capgo/capacitor-social-login 在 @capgo/capacitor-social-login 中查看实现细节, @capgo/capacitor-passkey 有关 @capgo/capacitor-passkey 的实现细节, @capgo/capacitor-native-biometric 以及 @capgo/capacitor-native-biometric 中的实现细节, 双因素认证 有关双重身份验证的实现细节。