Prostsze wykrywanie funkcji WebAuthn

Data publikacji: 15 stycznia 2025 r., ostatnia aktualizacja: 9 kwietnia 2026 r.

WebAuthn oferuje unikalne możliwości, takie jak interakcja z Bluetooth w przypadku protokołu hybrydowego, komunikacja z dostawcami kluczy dostępu i sugerowanie kluczy dostępu w funkcji autouzupełniania. Różni klienci i uwierzytelniacze oferują jednak różne poziomy obsługi funkcji WebAuthn. Ta rozbieżność może prowadzić do rozdrobnienia środowiska użytkownika, w którym niektórzy użytkownicy mogą napotkać błędy lub nie będą mogli korzystać z określonych opcji uwierzytelniania. Umożliwienie deweloperom określania możliwości klienta pozwala im tworzyć bardziej niezawodne procesy uwierzytelniania, które dostosowują się do tych różnic.

Metoda PublicKeyCredential.getClientCapabilities() umożliwia podmiotom polegającym określenie, które funkcje WebAuthn są obsługiwane przez przeglądarkę. Metoda zwraca obietnicę, która jest rozwiązywana jako lista obsługiwanych funkcji, co pozwala programistom dostosowywać procesy uwierzytelniania i przepływy pracy do konkretnych możliwości klienta.

Zgodność

Browser Support

  • Chrome: 133.
  • Edge: 133.
  • Firefox: 135.
  • Safari: 17.4.

Source

getClientCapabilities()

getClientCapabilities() to interfejs WebAuthn API, który umożliwia stronom ufającym określanie dostępnych funkcji. Aby korzystać z interfejsu API, musisz wywołać PublicKeyCredential.getClientCapabilities(). Zwrócony obiekt Promise jest rozpoznawany jako obiekt zawierający funkcje, z których każda wskazuje swoją dostępność za pomocą wartości true lub false. Jeśli funkcja jest oznaczona jako undefined, jej dostępność jest nieznana.

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

conditionalCreate

Przeglądarka może utworzyć dane logowania bez wyświetlania widocznego interfejsu modalnego, jeśli użytkownik wyraził już zgodę na ich utworzenie.

conditionalGet

Przeglądarka może uwierzytelniać użytkownika, wyświetlając klucze dostępu w oknie autouzupełniania zamiast w wyraźnym interfejsie modalnym. Istniejący odpowiednik to PublicKeyCredential.isConditionalMediationAvailable().

hybridTransport

Urządzenie może używać Bluetootha, aby przeglądarka mogła utworzyć dane logowania i uwierzytelnić się za ich pomocą na różnych urządzeniach za pomocą protokołu hybrydowego. Zwykle oznacza to, że przeglądarka może wyświetlić kod QR, aby użytkownik mógł go zeskanować i zalogować się za pomocą telefonu, na którym znajdują się dane logowania.

passkeyPlatformAuthenticator

Przeglądarka może utworzyć dane logowania i uwierzytelnić się za ich pomocą za pomocą uwierzytelniacza platformy weryfikującej użytkownika lub innego urządzenia, które obsługuje je za pomocą protokołu hybrydowego. Odpowiednik: hybridTransport || userVerifyingPlatformAuthenticator.

relatedOrigins

Przeglądarka może utworzyć dane logowania i uwierzytelnić się za ich pomocą, nawet jeśli nie pasują do identyfikatora RP, o ile są określone w pliku powiązanych domen.

signalAllAcceptedCredentials

Przeglądarka może sygnalizować dostępne dane logowania na serwerze dostawcy kluczy dostępu, aby dostawca kluczy dostępu mógł utrzymywać listę kluczy dostępu w zgodzie z serwerem.

signalCurrentUserDetails

Przeglądarka może przesyłać do 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ł utrzymywać spójność informacji o kluczu dostępu z serwerem.

signalUnknownCredential

Przeglądarka może sygnalizować usunięte dane logowania na serwerze dostawcy kluczy dostępu, aby dostawca kluczy dostępu mógł zachować spójność listy kluczy dostępu z serwerem.

userVerifyingPlatformAuthenticator

Przeglądarka może utworzyć dane logowania na platformie uwierzytelniającej i uwierzytelnić się za ich pomocą. Nie oznacza to, że przeglądarka obsługuje protokół hybrydowy. Istniejący odpowiednik to PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable().

rozszerzenia

Dostawcy tożsamości mogą też określać dostępne rozszerzenia za pomocą parametru getClientCapabilities().

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

Identyfikator ma przedrostek extension:, po którym następuje nazwa rozszerzenia. Nazwy rozszerzeń znajdziesz w identyfikatorach rozszerzeń WebAuthn zdefiniowanych w IANA.

Więcej informacji

Więcej informacji o kluczach dostępu znajdziesz w artykule Logowanie bez hasła za pomocą kluczy dostępu.