Określanie dostawcy klucza dostępu za pomocą identyfikatora AAGUID

Podmioty zależne (RP) mogą ustalić, który dostawca kluczy dostępu został utworzony przez sprawdzenie identyfikatora AAGUID powiązanych danych logowania klucza publicznego.

Wyzwania związane z zarządzaniem kluczami dostępu

Jedną z zalet korzystania z kluczy dostępu jest możliwość tworzenia wielu kluczy dla jednego konta. Dzięki tej elastyczności i niezawodności klucza dostępu nawet wtedy, gdy użytkownik utraci dostęp do konta z powodu utraty klucza, może zalogować się na stronie uzależnionej za pomocą alternatywnych kluczy dostępu.

Użytkownicy, którzy zarządzają wieloma kluczami dostępu w grupie objętej ograniczeniami, muszą znaleźć właściwy klucz, aby edytować lub usunąć konkretny klucz. Dobrym przykładem jest sytuacja, w której użytkownik chce usunąć nieużywany klucz dostępu. Zalecamy, aby do listy kluczy dostępu dołączać informacje o kluczu dostępu, takie jak data utworzenia i data ostatniego użycia. Pomaga to użytkownikom znaleźć określony klucz.

W ramach grup objętych ograniczeniami mogą też umożliwiać użytkownikom nadawanie nazwy klucza od razu po jego utworzeniu lub później, ale wielu użytkowników tego nie robi. W idealnej sytuacji nazwy kluczy dostępu mają automatycznie odzwierciedlać sygnały wysyłane od klienta lub informacje zawarte w danych logowania klucza publicznego.

Przeglądarki udostępniają ciąg znaków klienta użytkownika, z którego podmioty zależne mogą nadawać nazwy kluczy dostępu, ale platformy takie jak przeglądarki na urządzeniach z Androidem, iOS czy przeglądarki na komputerach z funkcjami rozszerzeń umożliwiają tworzenie kluczy dostępu za pomocą zewnętrznych menedżerów haseł, a ciąg znaków klienta użytkownika niekoniecznie wskazuje, kto jest rzeczywistym dostawcą kluczy dostępu.

Dzięki globalnemu unikalnemu identyfikatorowi atestu Authenticator (AAGUID), które jest zawarte w danych logowania klucza publicznego zwracanych w ramach rejestracji klucza dostępu, grupy RP mogą określić dostawcę klucza dostępu i używać go, aby użytkownicy mogli łatwo znaleźć odpowiedni klucz.

Określanie dostawcy klucza dostępu za pomocą identyfikatora AAGUID

AAGUID to unikalny numer identyfikujący model mechanizmu uwierzytelniającego (nie jego konkretne wystąpienie). Identyfikator AAGUID można znaleźć jako część danych uwierzytelniających klucza publicznego.

Układ obiektów atestu ilustrujący dołączone dane mechanizmu uwierzytelniającego (zawierające dane atestów) oraz oświadczenie o atestach.
Identyfikator AAGUID można znaleźć w danych uwierzytelniających.

RP 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, korzystając z Menedżera haseł Google, grupa kontrolna otrzyma identyfikator AAGUID o wartości "ea9b8d66-4d01-1d21-3ce4-b6b48cb575d4". Kontroler z grupą objętą ograniczeniami może dodać do klucza dostępu na liście kluczy dostępu adnotacje, które wskazują, że został on utworzony w Menedżerze haseł Google.

Ustawienia kluczy dostępu na stronie ustawień zabezpieczeń zawierają szczegółowe informacje o każdym kluczu.
Przykładowy interfejs zarządzania kluczami dostępu

Aby zmapować identyfikator AAGUID na dostawcę kluczy dostępu, grupy RP mogą używać pochodzącego ze społeczności repozytorium identyfikatorów AAGUID. Wyszukując AAGUID na liście, można znaleźć nazwę dostawcy klucza dostępu i jego ikonę z tekstem danych SVG.

Większość bibliotek WebAuthn udostępnia funkcję pobierania identyfikatora AAGUID. Poniższy przykład przedstawia kod rejestracji po stronie serwera przy użyciu 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 identyfikujący dostawcę klucza dostępu, który utworzył klucz. RP mogą używać parametru AAGUID, by ułatwić użytkownikom zarządzanie ich kluczami dostępu. Repozytorium AAGUID ze społeczności może być używane do mapowania identyfikatorów AAGUID na dostawców kluczy dostępu.