Data publikacji: 15 stycznia 2025 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 autouzupełnianiu. Różni klienci i uwierzytelniający oferują jednak różne poziomy obsługi funkcji WebAuthn. Ta rozbieżność może prowadzić do fragmentacji ś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 na podstawie konkretnych funkcji klienta.
Zgodność
getClientCapabilities()
getClientCapabilities()
to interfejs WebAuthn API, który umożliwia podmiotom polegającym określanie dostępnych funkcji. Aby używać 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
, oznacza to, że jej dostępność 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 widocznego interfejsu modalnego.
conditionalGet
Przeglądarka może uwierzytelniać użytkownika, wyświetlając klucze dostępu w oknie autouzupełniania zamiast w wyraźnym interfejsie modalnym. Obecny 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 przy użyciu 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 ten proces za pomocą protokołu hybrydowego. Odpowiednik: hybridTransport ||
userVerifyingPlatformAuthenticator
.
relatedOrigins
Przeglądarka może utworzyć dane logowania i użyć ich do uwierzytelnienia, które nie pasuje do identyfikatora RP, o ile jest on określony 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 nazwa wyświetlana na serwerze, aby dostawca klucza dostępu mógł zachować 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.
Obecny odpowiednik to PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable()
.
rozszerzenia
Dostawcy usług 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.