Strony ufające mogą określić, przez którego dostawcę kluczy dostępu został utworzony klucz dostępu, sprawdzając identyfikator AAGUID powiązanych danych logowania za pomocą klucza publicznego.
Problemy z zarządzaniem kluczami dostępu
Jedną z zalet kluczy dostępu jest to, że użytkownicy mogą utworzyć wiele kluczy dostępu do jednego konta. Dzięki tej elastyczności i solidności kluczy dostępu nawet jeśli użytkownik straci jeden z nich i nie będzie mógł zalogować się na konto, nadal będzie mógł zalogować się w usłudze, używając innych kluczy dostępu.
Użytkownicy, którzy zarządzają wieloma kluczami dostępu w usłudze RP, mają problem z identyfikacją właściwego klucza, gdy chcą go edytować lub usunąć. Dobrym przykładem jest sytuacja, w której użytkownik chce usunąć nieużywany klucz dostępu. Zaleca się, aby strony RP dołączały do listy kluczy dostępu informacje o kluczu dostępu, takie jak data utworzenia i data ostatniego użycia. Ułatwia to użytkownikom znajdowanie konkretnego klucza dostępu.
RP mogą też zezwalać użytkownikom na nadawanie nazwy kluczowi dostępu od razu po jego utworzeniu lub później, ale wielu użytkowników tego nie robi. Najlepiej, aby klucze dostępu były nazywane automatycznie na podstawie sygnałów wysyłanych przez klienta lub informacji zawartych w danych logowania za pomocą klucza publicznego.
Przeglądarki udostępniają ciąg klienta użytkownika, którego strony ufające mogą używać do nazywania kluczy dostępu. Jednak platformy takie jak Android, iOS czy przeglądarki na komputery z możliwością rozszerzania umożliwiają tworzenie kluczy dostępu przez menedżery haseł innych firm, a ciąg klienta użytkownika nie musi odzwierciedlać tego, kto jest rzeczywistym dostawcą klucza dostępu.
Dzięki identyfikatorowi AAGUID (Authenticator Attestation Globally Unique Identifier) zawartemu w danych logowania klucza publicznego zwracanych podczas rejestracji klucza dostępu strony RP mogą określić dostawcę klucza dostępu i pomóc użytkownikom znaleźć odpowiedni klucz dostępu.
Określanie dostawcy klucza dostępu za pomocą identyfikatora AAGUID
AAGUID to niepowtarzalny numer, który identyfikuje model urządzenia uwierzytelniającego (a nie konkretną instancję urządzenia). Identyfikator AAGUID można znaleźć w danych uwierzytelniania klucza publicznego.

Strony ufające mogą używać identyfikatora AAGUID do identyfikowania dostawcy klucza dostępu. Jeśli na przykład użytkownik utworzy klucz dostępu na urządzeniu z Androidem za pomocą Menedżera haseł Google, RP otrzyma identyfikator AAGUID w postaci "ea9b8d66-4d01-1d21-3ce4-b6b48cb575d4"
. RP może dodać adnotację do klucza dostępu na liście kluczy dostępu, aby wskazać, że został on utworzony w Menedżerze haseł Google.

Aby zmapować identyfikator AAGUID na dostawcę kluczy dostępu, strony RP mogą użyć repozytorium identyfikatorów AAGUID pochodzącego ze źródeł społecznościowych. Wyszukując identyfikator AAGUID na liście, można znaleźć nazwę dostawcy klucza dostępu i tekst danych SVG ikony.
Pobieranie identyfikatora AAGUID to funkcja, którą udostępnia większość bibliotek WebAuthn. Poniższy przykład pokazuje kod rejestracji po stronie serwera z użyciem 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';
Podsumowanie
AAGUID to unikalny ciąg znaków, który identyfikuje dostawcę klucza dostępu, który go utworzył. RP mogą używać identyfikatora AAGUID, aby ułatwić użytkownikom zarządzanie kluczami dostępu. Repozytorium AAGUID pochodzące ze społeczności może służyć do mapowania AAGUID na dostawców kluczy dostępu.