Повторная регистрация того же устройства Yubikey U2F - PullRequest
0 голосов
/ 12 февраля 2019

У меня есть сомнения.Я установил полное решение вокруг клавиш Yubico U2F.Но теперь я не могу остановить повторную регистрацию одного и того же устройства для пользователя с тем же идентификатором приложения.При проверке дескрипторов ключей в моей базе данных они показывают разные значения для каждой дублированной регистрации.Пожалуйста, помогите мне.

1 Ответ

0 голосов
/ 25 апреля 2019

Если вы используете API WebAuthn, вы можете отправить все уже зарегистрированные ключи клиенту при попытке добавить новый ключ, используя ключ «excludeCredentials».Эти учетные данные будут отформатированы так же, как при попытке войти в систему.

excludeCredentials - содержит список учетных данных, которые уже были зарегистрированы для пользователя.Этот список затем передается аутентификатору, и если аутентификатор распознает любой из них, он отменяет операцию с ошибкой CREDENTIAL_EXISTS, предотвращая тем самым двойную регистрацию одного и того же аутентификатора.

Источник: https://medium.com/@herrjemand/introduction-to-webauthn-api-5fd1fb46c285

Примером JSON, который клиент получает при добавлении нового ключа, может быть:

{
 "publicKey":{
  "rp":{
     "name":"YourApp",
     "id":"YourAddress"
  },
  "authenticatorSelection":{
     "userVerification":"preferred"
  },
  "user":{
     "id":"UserId",
     "name":"Username",
     "displayName":"displayName"
  },
  "pubKeyCredParams":[
     {
        "type":"public-key",
        "alg":-7
     }
  ],
  "attestation":"direct",
  "extensions":{
     "exts":true
  },
  "timeout":20000,
  "challenge":"...",
  "excludeCredentials":[
     {
        "id":"...",
        "type":"public-key",
        "transports":[
           "usb",
           "ble",
           "nfc",
           "internal"
        ]
     },
     {
        "id":"...",
        "type":"public-key",
        "transports":[
           "usb",
           "ble",
           "nfc",
           "internal"
        ]
     }
  ]
 }
}

Когда браузер обнаруживает, чтопользователь пытается зарегистрировать ключ, который уже был зарегистрирован, он скажет пользователю попробовать другой ключ, и запрос вообще не будет отправлен на сервер.

...