Использование навигатора учетных данных API с идентификатором телефона Touch - PullRequest
0 голосов
/ 25 февраля 2020

Я пытаюсь создать хобби-проект для webauthn api. У меня есть страница, которая создает учетные данные, и она (правильно) предлагает нам использовать ключ безопасности Я хотел бы использовать свой touchid (на samsung s9) или touchid на моей маме c, чтобы создать учетные данные (которые, похоже, не работают). Нужно ли мне что-то сделать для работы с идентификатором касания?

enter image description here

Ниже приведен код для создания учетные данные (я изменил доменные имена).

<script type="text/javascript">
  let randomStringFromServer = `sdflksdf934mnsdfsdfimlsndfbop1asd239dsfsdfkllkjsdf`;

  const publicKeyCredentialCreationOptions = {
    challenge: Uint8Array.from(randomStringFromServer, c =>
      c.charCodeAt(0)
    ),
    rp: {
      name: "Mr Tom",
      id: "helloworld.com"
    },
    user: {
      id: Uint8Array.from("UZSL85T9AFC", c => c.charCodeAt(0)),
      name: "hello@world.com",
      displayName: "MrTom"
    },
    pubKeyCredParams: [{ alg: -7, type: "public-key" }],
    authenticatorSelection: {
      authenticatorAttachment: "cross-platform"
    },
    timeout: 60000,
    attestation: "direct"
  };

  const credential = await navigator.credentials.create({
    publicKey: publicKeyCredentialCreationOptions
  });

  console.log(credential);
</script>

1 Ответ

1 голос
/ 25 февраля 2020

Важный бит для управления этим поведением:

authenticatorSelection: {
  authenticatorAttachment: "cross-platform"
}

Это говорит API, что вы хотите использовать внешнее устройство в качестве аутентификатора. Если вы используете platform вместо cross-platform, браузер должен соблюдать это и пытаться использовать встроенные функции устройства. Если аутентификаторы платформы недоступны, вы, скорее всего, сразу же получите ошибку - либо NotAllowedError, либо NotSupportedError по моему опыту.

...