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ść
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.