Запретить создание нового ключа доступа, если он уже существует

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

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

Массив excludeCredentials имеет следующие атрибуты:

  • type : строка, описывающая тип генерируемых учетных данных открытого ключа. Значение по умолчанию — « public-key ».
  • id : ArrayBuffer , соответствующий существующему идентификатору учетных данных открытого ключа ( PublicKeyCredential.rawId ). Этот идентификатор генерируется во время создания экземпляра PublicKeyCredential .

Клиент возвращает ошибку , если пользователь пытается создать новые учетные данные на аутентификаторе платформы, который уже содержит один из учетных данных, перечисленных в этом параметре. Если аутентификатор уже содержит учетные данные открытого ключа этого типа, он собирает согласие пользователя как обычно и показывает пользователю индикатор успеха без создания новых учетных данных. Выдается исключение InvalidStateError , указывающее, что у пользователя уже есть действительные учетные данные, соответствующие excludeCredentials .

"excludeCredentials": [
    {"id": "<id-1>", "type": "public-key"},
    {"id": "<id-2>", "type": "public-key"}
  ]

Этот JSON можно использовать для предотвращения повторной регистрации аутентификаторов с одним из предоставленных учетных данных. Каждое значение " <id-*> " должно быть заполнено идентификатором исключаемых учетных данных.

Узнайте больше об excludeCredentials в рекомендации W3C.