Данные аутентификатора
Структура данных аутентификатора содержит информацию об обработке запроса на создание или аутентификацию учетных данных, например, хэш идентификатора доверенной стороны (rpIdHash), счетчик подписей, проверка присутствия пользователя, флаги проверки пользователя и любые расширения, обработанные аутентификатором. На этой странице описано содержание структуры данных.
Доступ к данным аутентификатора
Данные аутентификатора доступны браузеру в виде ArrayBuffer и могут быть получены несколькими способами. Два наиболее удобных способа:
- В свойстве
PublicKeyCredential.response.authenticatorData, доступном в объектеPublicKeyCredential, возвращаемом при успешном вызовеnavigator.credentials.create()(создание учетных данных). - С помощью метода
PublicKeyCredential.response.getAuthenticatorData(), доступного в объектеPublicKeyCredential, возвращаемом при успешном вызовеnavigator.credentials.get()(аутентификация).
Структура данных
Массив данных аутентификатора ArrayBuffer имеет длину не менее 37 байтов и содержит следующие поля:
- rpIdHash (32 байта)
-
Хэш SHA-256 идентификатора доверенной стороны (Relying Party ID), к которому относится учетная запись. Сервер проверяет, что этот хэш совпадает с хэшем SHA256 собственного идентификатора доверенной стороны, чтобы предотвратить фишинг или атаки "человек посередине".
- flags (1 байт)
-
Поле бит, указывающее различные атрибуты, утвержденные аутентификатором. Биты имеют следующее значение, где бит 0 — младший бит, а все биты, не указанные ниже, — «зарезервированы для будущего использования»:
- Бит 0, Присутствие пользователя (UP): Если установлен (т.е., равен
1), аутентификатор проверил присутствие пользователя с помощью какой-либо проверки присутствия пользователя (TUP), например, нажатия кнопки на аутентификаторе. - Бит 2, Верификация пользователя (UV): Если установлен, аутентификатор проверил фактического пользователя с помощью биометрии, PIN-кода или другого метода.
- Бит 3, Возможность резервного копирования (BE): Если установлен, источник учетных данных с открытым ключом, используемый аутентификатором для создания утверждения, подлежит резервному копированию. Это означает, что он может быть каким-либо образом резервирован (например, через облачное или локальное сетевое резервное копирование), и, следовательно, может быть доступен на аутентификаторе, отличном от аутентификатора, который его создал. Источники учетных данных, подлежащие резервному копированию, также известны как учетные данные для нескольких устройств.
- Бит 4, Состояние резервного копирования (BS): Если установлен, источник учетных данных с открытым ключом в настоящее время резервируется (см. бит 3 для контекста).
- Бит 6, Данные аутентифицированной учетной записи (AT): Если установлен, данные аутентифицированной учетной записи будут следовать непосредственно за первыми 37 байтами этого
authenticatorData. - Бит 7, Данные расширений (ED): Если установлен, присутствуют данные расширений. Данные расширений следуют за данными аутентифицированной учетной записи, если они присутствуют, или будут следовать непосредственно за первыми 37 байтами
authenticatorDataв случае отсутствия данных аутентифицированной учетной записи.
- Бит 0, Присутствие пользователя (UP): Если установлен (т.е., равен
- signCount (4 байта)
-
Счетчик подписей, если поддерживается аутентификатором (иначе устанавливается в 0). Серверы могут необязательно использовать этот счетчик для обнаружения клонирования аутентификатора.
- attestedCredentialData (переменная длина)
-
Учетные данные, которые были созданы. Оно присутствует только во время вызова
navigator.credentials.create(). Это последовательность байтов со следующим форматом:-
AAGUID (16 байтов): Уникальный идентификатор аутентификации аутентификатора, уникальное число, идентифицирующее модель аутентификатора (а не конкретный экземпляр аутентификатора). Доверенная сторона может использовать его для получения характеристик аутентификатора, просмотрев его метаданные через службу метаданных FIDO по ссылке FIDO metadata service. Это актуально в определенных ситуациях, таких как корпоративные развертывания или когда нормативные требования диктуют использование определенного типа аутентификатора; в противном случае это можно игнорировать.
-
credentialIdLength (2 байта): Длина идентификатора учетных данных, который следует за этими байтами.
-
credentialId (переменная длина): Уникальный идентификатор этих учетных данных для их запроса в будущем для аутентификации. Длина учетных данных составляет "credentialIdLength" байтов.
-
credentialPublicKey (переменная длина): Данные открытого ключа в формате COSE. Этот открытый ключ будет храниться на сервере, связанном с учетной записью пользователя, и будет использоваться для будущих аутентификаций. Доверенные стороны могут получить DER-представление без разбора данных аутентификатора в формате COSE с помощью метода
AuthenticatorAttestationResponse.getPublicKey().
-
- extensions (переменная длина)
-
Необязательная карта CBOR, содержащая результаты обработки расширений аутентификатором.
Расширения необязательны, и разные браузеры могут распознавать разные расширения. Обработка расширений всегда необязательна для браузера: если браузер не распознает данное расширение, он просто проигнорирует его. Сведения об использовании расширений и о поддержке различных расширений различными браузерами см. в разделе Расширения Web Authentication.
Примечание: Данные аутентификатора содержат только результаты обработки расширений аутентификатором. Результаты обработки расширений браузером (клиентом) могут быть получены через
PublicKeyCredential.getClientExtensionResults.
См. также
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/Web_Authentication_API/Authenticator_data