Доверяющие стороны (RP) могут определить, каким поставщиком ключей доступа создан ключ доступа, проверив AAGUID связанных учетных данных открытого ключа.
Проблемы с управлением ключами доступа
Одним из преимуществ использования ключей доступа является то, что они позволяют пользователям создавать несколько ключей доступа для одной учетной записи. Благодаря такой гибкости и надежности пароля, даже если пользователь заблокирован из-за потери одного из своих ключей доступа, он все равно может войти в систему проверяющей стороны, используя альтернативные ключи доступа.
Задача пользователей, которые управляют несколькими ключами доступа на RP, состоит в том, чтобы определить правильный ключ доступа, когда им необходимо отредактировать или удалить конкретный ключ доступа среди других. Хорошим примером является случай, когда пользователь хочет удалить неиспользуемый ключ доступа. RP рекомендуется прикреплять к списку ключей доступа информацию о ключе доступа, такую как дата создания и дата последнего использования . Это помогает пользователям найти конкретный ключ доступа.
RP также могут позволить пользователям называть пароль сразу после их создания или позже, но многие пользователи этого не делают. В идеале ключам доступа присваиваются имена автоматически, отражающие сигналы, отправленные клиентом, или информацию, включенную в учетные данные открытого ключа.
Браузеры предоставляют строку пользовательского агента, которую доверяющие стороны могут использовать для именования ключей доступа, но такие платформы, как Android, iOS или настольные браузеры с возможностями расширения, позволяют создавать ключ доступа сторонними менеджерами паролей, и строка пользовательского агента не обязательно представляет, кто на самом деле является пользователем. поставщик ключей доступа.
Благодаря глобальному уникальному идентификатору аттестации аутентификатора (AAGUID), включенному в учетные данные открытого ключа, возвращаемые при регистрации ключа доступа, RP могут определить поставщика ключа доступа и использовать его, чтобы пользователи могли легко найти правильный ключ доступа.
Определите поставщика ключа доступа с помощью AAGUID
AAGUID — это уникальный номер, который идентифицирует модель аутентификатора (а не конкретный экземпляр аутентификатора). AAGUID можно найти как часть данных аутентификатора учетных данных открытого ключа.
RP могут использовать AAGUID для идентификации поставщика ключа доступа. Например, если пользователь создает ключ доступа на устройстве Android с помощью диспетчера паролей Google, RP получит AAGUID "ea9b8d66-4d01-1d21-3ce4-b6b48cb575d4"
. RP может добавить к ключу примечания в списке ключей, чтобы указать, что он был создан в Диспетчере паролей Google.
Чтобы сопоставить 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 с поставщиками ключей доступа.