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

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

Чтобы сопоставить AAGUID с поставщиком ключей доступа, RP могут использовать репозиторий 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 — это уникальная строка, идентифицирующая поставщика ключей доступа, создавшего этот ключ. RP могут использовать AAGUID для упрощения управления ключами доступа пользователями. Для сопоставления AAGUID с поставщиками ключей доступа можно использовать репозиторий AAGUID, созданный сообществом.