更改 WebAuthn faceID 提示/对话框上的文本

问题描述

我正在尝试与 WebAuthn 集成以进行用户身份验证。

以下是我目前使用的代码

const credOptions = {
    publicKey: {
      rp: {
        name: 'test inc',id:'login.test.com'
      },user,authenticatorSelection: {
        authenticatorAttachment: 'platform',requireResidentKey: true,userVerification: 'preferred'
      },pubKeyCredParams: [
        {
          type: 'public-key',alg: -7
        }
      ],attestation: 'direct',timeout: 60000,challenge
    }
  };
  try {
    const cred = await navigator.credentials.create(credOptions);
    return cred;
  } catch (e) {
    console.log(e);
  }

问题

  • 在下面的屏幕截图中,我是否可以更改 WebAuthn 提示/对话框中显示的“登录”和“您想...”下的文本用于 FaceID 或 TouchID。
  • 基本上我想在这两个字段中显示自定义文本,例如:
    • Sign In --> Enroll
    • Do you want to allow "login.com" to use FaceID --> Do you want to allow "Paypal" to use FaceID?

我尝试更改 rp 中的依赖方 (credOptions) 信息,但没有看到预期的结果。

任何人都可以指导一下这是否可行。

webauthn prompt screenshot

解决方法

不幸的是,这是无法自定义的操作系统级提示。这是 WebAuthn API 的一个常见限制 - 响应于 navigator.credentials.create().get() 出现的浏览器和操作系统模式无法通过 JS 进行操作,因为它们是由浏览器或操作系统本身在一个上下文中处理的出于安全原因,故意不向网页公开。

,

不幸的是,它不太可能使用任意文本(“注册”和“贝宝”)这样做,因为文本是由系统提供的,并且用户相信系统能够正确地表示正在发生的事情。

具有可分段替换的文本也可能会干扰他们在用户体验中做出的本地化决策。

最后,在 WebAuthn javascript 中没有定义方法来执行此操作。

您可能考虑做的是就此向 Apple 提供反馈,尤其是您想要或考虑的不同措辞,例如“登录”与“注册”与“继续”。这三个巧合的是来自其 UX guidelines for 'Sign in with Apple' 的术语,并由操作系统以本地化形式公开。