Prostsze wykrywanie funkcji WebAuthn za pomocą funkcji getClientCapabilities()

Data publikacji: 15 stycznia 2025 r.

WebAuthn zapewnia unikalne funkcje, takie jak interakcja z Bluetooth w przypadku protokołu hybrydowego, komunikacja z dostawcami kluczy dostępu oraz sugerowanie kluczy dostępu w autouzupełnianiu. Różne aplikacje i urządzenia uwierzytelniające oferują jednak różne poziomy obsługi funkcji WebAuthn. Ta rozbieżność może prowadzić do fragmentarycznych wrażeń użytkowników, w których przypadku niektórzy użytkownicy mogą napotkać błędy lub nie być w stanie korzystać z pewnych opcji uwierzytelniania. Udostępnienie deweloperom sposobu na określenie możliwości klienta umożliwia im tworzenie bardziej niezawodnych procesów uwierzytelniania, które dostosowują się do tych różnic.

Metoda PublicKeyCredential.getClientCapabilities() pozwala stronom uwierzytelniającym określić, które funkcje WebAuthn są obsługiwane przez przeglądarkę. Metoda zwraca obietnicę, która jest mapowana na listę obsługiwanych funkcji, co pozwala deweloperom dostosować proces uwierzytelniania i przepływy pracy do konkretnych możliwości klienta.

Zgodność

Browser Support

  • Chrome: not supported.
  • Edge: not supported.
  • Firefox: not supported.
  • Safari: 17.4.

getClientCapabilities()

getClientCapabilities() to interfejs WebAuthn API, który umożliwia stronom uwierzytelniającym określenie dostępnych funkcji. Aby korzystać z interfejsu API, musisz wywołać funkcję PublicKeyCredential.getClientCapabilities(). Zwrócona obietnica jest obiektem zawierającym możliwości, z których każda wskazuje swoją dostępność za pomocą wartości true lub false. Jeśli wartość to undefined, oznacza to, że dostępność tej funkcji jest nieznana.

if (window.PublicKeyCredential &&
  if (PublicKeyCredential.getClientCapabilities) {
    const capabilities = await PublicKeyCredential.getClientCapabilities();
    if (capabilities.conditionalGet === true &&
        capabilities.passkeyPlatformAuthenticator === true) {
      // The browser supports passkeys and the conditional mediation.
    }
  }
}

conditionalCreate

Jeśli użytkownik wyraził już zgodę na utworzenie danych logowania, przeglądarka może je utworzyć bez wyświetlania modalnego interfejsu użytkownika.

conditionalGet

Przeglądarka może uwierzytelnić użytkownika, wyświetlając klucze dostępu w ramach okna dialogowego autouzupełniania zamiast widocznego interfejsu modalnego. Dotychczasowy odpowiednik to: PublicKeyCredential.isConditionalMediationAvailable().

hybridTransport

Urządzenie może używać Bluetootha, aby przeglądarka mogła utworzyć dane logowania i za ich pomocą uwierzytelnić się na różnych urządzeniach za pomocą protokołu hybrydowego. Oznacza to zazwyczaj, że przeglądarka może wyświetlić kod QR, który użytkownik może zeskanować i zalogować się za pomocą telefonu z zapisanemi danymi logowania.

passkeyPlatformAuthenticator

Przeglądarka może utworzyć dane logowania i za ich pomocą uwierzytelnić użytkownika za pomocą uwierzytelniania na platformie lub innego urządzenia, które obsługuje ten protokół hybrydowy. Odpowiednik: hybridTransport || userVerifyingPlatformAuthenticator.

relatedOrigins

Przeglądarka może utworzyć i zastosować niepasujące do identyfikatora RP dane logowania, o ile są one określone w pliku z powiązanymi źródłami.

signalAllAcceptedCredentials

Przeglądarka może przekazać dostawcy kluczy dostępu informacje o dostępnych danych logowania na serwerze, aby dostawca mógł zachować spójność listy kluczy dostępu z serwerem.

signalCurrentUserDetails

Przeglądarka może przekazać dostawcy klucza dostępu informacje o użytkowniku, takie jak nazwa użytkownika i wyświetlana nazwa na serwerze, aby dostawca klucza dostępu mógł zachować spójność informacji o kluczu dostępu z informacjami na serwerze.

signalUnknownCredential

Przeglądarka może przekazać dostawcy kluczy dostępu informację o usuniętym identyfikatorze na serwerze, aby dostawca mógł zachować spójność listy kluczy dostępu z serwerem.

userVerifyingPlatformAuthenticator

Przeglądarka może tworzyć dane logowania i uwierzytelniać się za pomocą uwierzytelniania na platformie. Nie oznacza to, że przeglądarka obsługuje protokół hybrydowy. Dotychczasowy odpowiednik to: PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable().

rozszerzenia

Dostawcy reklam mogą też określać dostępne rozszerzenia za pomocą zasady getClientCapabilities().

if (capabilities['extension:appid'] === true) {
  // appId extension is supported
}

Identyfikator ma prefiks extension:, a za nim następuje nazwa rozszerzenia. Aby uzyskać informacje o nazwach rozszerzeń, zapoznaj się z identyfikatorami rozszerzeń WebAuthn zdefiniowanymi w IANA.

Więcej informacji

Aby dowiedzieć się więcej o kluczach dostępu, zacznij od artykułu Logowanie bez hasła za pomocą kluczy dostępu.