Повторная регистрация одного и того же устройства Yubikey U2F

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


person Sidharth Satheesh    schedule 12.02.2019    source источник


Ответы (1)


Если вы используете WebAuthn API, вы можете отправить все уже зарегистрированные ключи клиенту при попытке добавить новый ключ с помощью ключа «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"
        ]
     }
  ]
 }
}

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

person Tim    schedule 25.04.2019