Доверяющие стороны (RP) могут определить, каким поставщиком ключей был создан ключ, изучив AAGUID соответствующих учетных данных открытого ключа.
Проблемы с управлением ключами доступа
Одно из преимуществ использования паролей заключается в том, что они позволяют пользователям создавать несколько паролей для одной учетной записи. Благодаря этой гибкости и надежности паролей, даже если пользователь потеряет один из своих паролей и не сможет войти в свою учетную запись, он все равно сможет использовать альтернативные пароли.
Для пользователей, управляющих несколькими паролями на сервере доступа, сложность заключается в том, чтобы найти нужный пароль, когда им необходимо отредактировать или удалить определенный пароль среди других. Хороший пример — когда пользователь хочет удалить неиспользуемый пароль. Рекомендуется добавлять в список паролей информацию о пароле, такую как дата создания и дата последнего использования . Это помогает пользователям найти конкретный пароль.
В системах с открытым ключом также может быть предусмотрена возможность присваивания имени ключу сразу после его создания или позднее, но многие пользователи этого не делают. В идеале, имена ключей присваиваются автоматически, отражая сигналы, отправляемые клиентом, или информацию, содержащуюся в учетных данных открытого ключа.
Браузеры предоставляют строку пользовательского агента, которую заинтересованные стороны могут использовать для именования ключей доступа, но такие платформы, как Android, iOS или настольные браузеры с возможностями расширения, позволяют создавать ключи доступа с помощью сторонних менеджеров паролей, и строка пользовательского агента не обязательно указывает, кто именно является поставщиком ключа доступа.
С помощью глобально уникального идентификатора аутентификатора (AAGUID), включенного в учетные данные открытого ключа, возвращаемые при регистрации пароля, поставщики паролей могут определить поставщика пароля и помочь пользователям найти правильный пароль.
Определите поставщика ключа доступа с помощью AAGUID.
AAGUID — это уникальный номер, идентифицирующий модель аутентификатора (а не конкретный экземпляр аутентификатора). AAGUID можно найти в данных аутентификатора открытого ключа.

Поставщики паролей могут использовать AAGUID для идентификации поставщика пароля. Например, если пользователь создает пароль на устройстве Android с помощью Google Password Manager, поставщик паролей получит AAGUID "ea9b8d66-4d01-1d21-3ce4-b6b48cb575d4" . Поставщик паролей может добавить пометку в список паролей, указывающую на то, что пароль был создан в Google Password Manager.

Для сопоставления AAGUID с поставщиком паролей, поставщики паролей могут использовать репозиторий AAGUID, созданный сообществом . Найдя AAGUID в списке , можно узнать имя поставщика паролей и текстовое содержимое его значка в формате SVG.
Получение AAGUID — это функция, которую предоставляют большинство библиотек WebAuthn. В следующем примере показан код регистрации на стороне сервера с использованием SimpleWebAuthn :
// Import a list of AAGUIDs from a JSON file
import aaguids from './aaguids.json' with { type: 'json' };
...
// Use SimpleWebAuthn handy function to verify the registration request.
const { verified, registrationInfo } = await verifyRegistrationResponse({
response: credential,
expectedChallenge,
expectedOrigin,
expectedRPID,
requireUserVerification: false,
});
...
const { aaguid } = registrationInfo;
const provider_name = aaguids[aaguid]?.name || 'Unknown';
Заключение
AAGUID — это уникальная строка, идентифицирующая поставщика ключей доступа, создавшего ключ. Поставщики ключей доступа могут использовать AAGUID для упрощения управления ключами доступа для пользователей. Для сопоставления AAGUID с поставщиками ключей доступа можно использовать общедоступный репозиторий AAGUID.