Web Authentication API

Этот перевод не завершён. Пожалуйста, помогите перевести эту статью с английского

Secure context
This feature is available only in secure contexts (HTTPS), in some or all supporting browsers.

API Web Authentication - расширение Credential Management API, добавляющее аутентификацию с использованием криптографии с открытым ключом, вход без пароля и/или надёжный второй фактор, не требующий SMS.

Принципы и использование веб-аутентификации

API Web Authentication (также называемое WebAuthn) использует ассметричную криптографию (систему с открытым ключом) вместо паролей или SMS-сообщений для регистрации, входа и двухфакторной аутентификации на веб-сайтах. Это устраняет многие значительные проблемы безопасности, такие как фишинг, утечки данных и атаки на SMS или иные методы двухфакторной аутентификации, при этом сильно упрощая использование, т.к. пользователям не нужно запоминать десятки сложных паролей.

На многих сайтах уже есть страницы для регистрации и входа в существующие учетные записи, и Web Authentication API может быть как заменой, так и дополнением для них. Как и остальные виды Credential Management API, Web Authentication API содержит два базовых метода: для регистрации и для входа:

  • navigator.credentials.create() - при использовании с опцией publicKey создает новый набор учетных данных для регистрации нового аккаунта или добавления пары ключей к уже существующему.
  • navigator.credentials.get() - при использовании с опцией publicKey использует существующий набор учетных данных для аутентификации в сервисе в качестве основного способа входа или второго фактора.

Обратите внимание, и create(), и get() работают только в Secure Context (например, когда подключение к серверу происходит через https или сервер работает на localhost).

In their most basic forms, both create() and get() receive a very large random number called a challenge from the server and they return the challenge signed by the private key back to the server. This proves to the server that a user is in possession of the private key required for authentication without revealing any secrets over the network.

In order to understand how the create() and get() methods fit into the bigger picture, it is important to understand that they sit between two components that are outside the browser:

  1. Server - the Web Authentication API is intended to register new credentials on a server (also referred to as a service or a relying party) and later use those same credentials on that same server to authenticate a user.
  2. Authenticator - the credentials are created and stored in a device called an authenticator. This is a new concept in authentication: when authenticating using passwords, the password is stored in a user's brain and no other device is needed; when authenticating using web authentication, the password is replaced with a key pair that is stored in an authenticator. The authenticator may be embedded into an operating system, such as Windows Hello, or may be a physical token, such as a USB or Bluetooth Security Key.

Регистрация

A typical registration process has six steps, as illustrated in Figure 1 and described further below. This is a simplification of the data required for the registration process that is only intended to provide an overview. The full set of required fields, optional fields, and their meanings for creating a registration request can be found in the PublicKeyCredentialCreationOptions dictionary. Likewise, the full set of response fields can be found in the PublicKeyCredential interface (where PublicKeyCredential.response is the AuthenticatorAttestationResponse interface). Note most JavaScript programmers that are creating an application will only really care about steps 1 and 5 where the create() function is called and subsequently returns; however, steps 2, 3, and 4 are essential to understanding the processing that takes place in the browser and authenticator and what the resulting data means.

Web Authentication API registration component and dataflow diagram

Figure 1 - a diagram showing the sequence of actions for a web authentication registration and the essential data associated with each action.

The registration steps are:

  1. Приложение запрашивает регистрацию - The application makes the initial registration request. The protocol and format of this request is outside of the scope of the Web Authentication API.
  2. Server Sends Challenge, User Info, and Relying Party Info - The server sends a challenge, user information, and relying party information to the JavaScript program. The protocol for communicating with the server is not specified and is outside of the scope of the Web Authentication API. Typically, server communications would be REST over https (probably using XMLHttpRequest or Fetch), but they could also be SOAP, RFC 2549 or nearly any other protocol provided that the protocol is secure. The parameters received from the server will be passed to the create() call, typically with little or no modification and returns a Promise that will resolve to a PublicKeyCredential containing an AuthenticatorAttestationResponse. Note that it is absolutely critical that the challenge be a buffer of random information (at least 16 bytes) and it MUST be generated on the server in order to ensure the security of the registration process.
  3. Браузер вызвает authenticatorMakeCredential() для аутентификатора - Internally, the browser will validate the parameters and fill in any defaults, which become the AuthenticatorResponse.clientDataJSON. One of the most important parameters is the origin, which is recorded as part of the clientData so that the origin can be verified by the server later. The parameters to the create() call are passed to the authenticator, along with a SHA-256 hash of the clientDataJSON (only a hash is sent because the link to the authenticator may be a low-bandwidth NFC or Bluetooth link and the authenticator is just going to sign over the hash to ensure that it isn't tampered with).
  4. Аутентификатор создает новую пару ключей и Attestation - Before doing anything, the authenticator will typically ask for some form of user verification. This could be entering a PIN, using a fingerprint, doing an iris scan, etc. to prove that the user is present and consenting to the registration. After the user verification, the authenticator will create a new asymmetric key pair and safely store the private key for future reference. The public key will become part of the attestation, which the authenticator will sign over with a private key that was burned into the authenticator during its manufacturing process and that has a certificate chain that can be validated back to a root of trust.
  5. Аутентификатор передает информацию в браузер - The new public key, a globally unique credential id, and other attestation data are returned to the browser where they become the attestationObject.
  6. Браузер создаёт итоговый набор данных, приложение отвечает серверу - The create() Promise resolves to an PublicKeyCredential, which has a PublicKeyCredential.rawId that is the globally unique credential id along with a response that is the AuthenticatorAttestationResponse containing the AuthenticatorResponse.clientDataJSON and AuthenticatorAttestationResponse.attestationObject. The PublicKeyCredential is sent back to the server using any desired formatting and protocol (note that the ArrayBuffer properties need to be be base64 encoded or similar).
  7. Сервер проверят и завершает регистрацию - Finally, the server is required to perform a series of checks to ensure that the registration was complete and not tampered with. These include:
    1. Verifying that the challenge is the same as the challenge that was sent
    2. Ensuring that the origin was the origin expected
    3. Validating that the signature over the clientDataHash and the attestation using the certificate chain for that specific model of the authenticator
    A complete list of validation steps can be found in the Web Authentication API specification. Assuming that the checks pan out, the server will store the new public key associated with the user's account for future use -- that is, whenever the user desires to use the public key for authentication.

Аутентификация

After a user has registered with web authentication, they can subsequently authenticate (a.k.a. - login or sign-in) with the service. The authentication flow looks similar to the registration flow, and the illustration of actions in Figure 2 may be recognizable as being similar to the illustration of registration actions in Figure 1. The primary differences between registration and authentication are that: 1) authentication doesn't require user or relying party information; and 2) authentication creates an assertion using the previously generated key pair for the service rather than creating an attestation with the key pair that was burned into the authenticator during manufacturing. Again, the description of authentication below is a broad overview rather than getting into all the options and features of the Web Authentication API. The specific options for authenticating can be found in the PublicKeyCredentialRequestOptions dictionary, and the resulting data can be found in the PublicKeyCredential interface (where PublicKeyCredential.response is the AuthenticatorAssertionResponse interface) .

WebAuthn authentication component and dataflow diagram

Figure 2 - similar to Figure 1, a diagram showing the sequence of actions for a web authentication and the essential data associated with each action.

  1. Приложение запрашивает аутентификацию - The application makes the initial authentication request. The protocol and format of this request is outside of the scope of the Web Authentication API.
  2. Server Sends Challenge - The server sends a challenge to the JavaScript program. The protocol for communicating with the server is not specified and is outside of the scope of the Web Authentication API. Typically, server communications would be REST over https (probably using XMLHttpRequest or Fetch), but they could also be SOAP, RFC 2549 or nearly any other protocol provided that the protocol is secure. The parameters received from the server will be passed to the get() call, typically with little or no modification. Note that it is absolutely critical that the challenge be a buffer of random information (at least 16 bytes) and it MUST be generated on the server in order to ensure the security of the authentication process.
  3. Браузер вызывает authenticatorGetCredential() для аутентификатора - Internally, the browser will validate the parameters and fill in any defaults, which become the AuthenticatorResponse.clientDataJSON. One of the most important parameters is the origin, which recorded as part of the clientData so that the origin can be verified by the server later. The parameters to the get() call are passed to the authenticator, along with a SHA-256 hash of the clientDataJSON (only a hash is sent because the link to the authenticator may be a low-bandwidth NFC or Bluetooth link and the authenticator is just going to sign over the hash to ensure that it isn't tampered with).
  4. Аутентификатор создает подпись - The authenticator finds a credential for this service that matches the Relying Party ID and prompts a user to consent to the authentication. Assuming both of those steps are successful, the authenticator will create a new assertion by signing over the clientDataHash and authenticatorData with the private key generated for this account during the registration call.
  5. Аутентификатор передает информацию в браузер - The authenticator returns the authenticatorData and assertion signature back to the browser.
  6. Браузер создаёт итоговый набор данных, приложение отвечает серверу - The browser resolves the Promise to a PublicKeyCredential with a PublicKeyCredential.response that contains the AuthenticatorAssertionResponse. It is up to the JavaScript application to transmit this data back to the server using any protocol and format of its choice.
  7. Сервер проверят и завершает аутентификацию - Upon receiving the result of the authentication request, the server performs validation of the response such as:
    1. Using the public key that was stored during the registration request to validate the signature by the authenticator.
    2. Ensuring that the challenge that was signed by the authenticator matches the challenge that was generated by the server.
    3. Checking that the Relying Party ID is the one expected for this service.
    A full list of the steps for validating an assertion can be found in the Web Authentication API specification. Assuming the validation is successful, the server will note that the user is now authenticated. This is outside the scope of the Web Authentication API specification, but one option would be to drop a new cookie for the user session.

Интерфейсы

Credential 
Provides information about an entity as a prerequisite to a trust decision.
CredentialsContainer
Exposes methods to request credentials and notify the user agent when events such as successful sign in or sign out happen. This interface is accessible from Navigator.credentials. The Web Authentication specification adds a publicKey member to the create() and get() methods to either create a new public key pair or get an authentication for a key pair, repsectively.
PublicKeyCredential
Provides information about a public key / private key pair, which is a credential for logging in to a service using an un-phishable and data-breach resistant asymmetric key pair instead of a password.
AuthenticatorResponse
The base interface for AuthenticatorAttestationResponse and AuthenticatorAssertionResponse, which provide a cryptographic root of trust for a key pair. Returned by CredentialsContainer.create() and CredentialsContainer.get(), respectively, the child interfaces include information from the browser such as the challenge origin. Either may be returned from PublicKeyCredential.response.
AuthenticatorAttestationResponse
Returned by CredentialsContainer.create() when a PublicKeyCredential is passed, and provides a cryptographic root of trust for the new key pair that has been generated.
AuthenticatorAssertionResponse
Returned by CredentialsContainer.get() when a PublicKeyCredential is passed, and provides proof to a service that it has a key pair and that the authentication request is valid and approved.

Опции

PublicKeyCredentialCreationOptions
Опции для CredentialsContainer.create().
PublicKeyCredentialRequestOptions
Опции для CredentialsContainer.get().

Примеры

 В целях безопасности вызовы Web Authentication API (create() и get()) отменяются, если браузер теряет фокус до завершения вызова.

// sample arguments for registration
var createCredentialDefaultArgs = {
    publicKey: {
        // Relying Party (a.k.a. - Service):
        rp: {
            name: "Acme"
        },

        // User:
        user: {
            id: new Uint8Array(16),
            name: "john.p.smith@example.com",
            displayName: "John P. Smith"
        },

        pubKeyCredParams: [{
            type: "public-key",
            alg: -7
        }],

        attestation: "direct",

        timeout: 60000,

        challenge: new Uint8Array([ // must be a cryptographically random number sent from a server
            0x8C, 0x0A, 0x26, 0xFF, 0x22, 0x91, 0xC1, 0xE9, 0xB9, 0x4E, 0x2E, 0x17, 0x1A, 0x98, 0x6A, 0x73,
            0x71, 0x9D, 0x43, 0x48, 0xD5, 0xA7, 0x6A, 0x15, 0x7E, 0x38, 0x94, 0x52, 0x77, 0x97, 0x0F, 0xEF
        ]).buffer
    }
};

// sample arguments for login
var getCredentialDefaultArgs = {
    publicKey: {
        timeout: 60000,
        // allowCredentials: [newCredential] // see below
        challenge: new Uint8Array([ // must be a cryptographically random number sent from a server
            0x79, 0x50, 0x68, 0x71, 0xDA, 0xEE, 0xEE, 0xB9, 0x94, 0xC3, 0xC2, 0x15, 0x67, 0x65, 0x26, 0x22,
            0xE3, 0xF3, 0xAB, 0x3B, 0x78, 0x2E, 0xD5, 0x6F, 0x81, 0x26, 0xE2, 0xA6, 0x01, 0x7D, 0x74, 0x50
        ]).buffer
    },
};

// register / create a new credential
navigator.credentials.create(createCredentialDefaultArgs)
    .then((cred) => {
        console.log("NEW CREDENTIAL", cred);

        // normally the credential IDs available for an account would come from a server
        // but we can just copy them from above...
        var idList = [{
            id: cred.rawId,
            transports: ["usb", "nfc", "ble"],
            type: "public-key"
        }];
        getCredentialDefaultArgs.publicKey.allowCredentials = idList;
        return navigator.credentials.get(getCredentialDefaultArgs);
    })
    .then((assertion) => {
        console.log("ASSERTION", assertion);
    })
    .catch((err) => {
        console.log("ERROR", err);
    });

Спецификации

Спецификация Статус Комментарии
Web Authentication: An API for accessing Public Key Credentials Level 1 Рекомендация Initial definition.

Совместимость

Credential

Update compatibility data on GitHub
КомпьютерыМобильные
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome для AndroidFirefox для AndroidOpera для AndroidSafari on iOSSamsung Internet
Credential
Экспериментальная
Chrome Полная поддержка 51Edge Полная поддержка 18Firefox Полная поддержка 60IE Нет поддержки НетOpera Полная поддержка ДаSafari Полная поддержка 13WebView Android Полная поддержка 51Chrome Android Полная поддержка 51Firefox Android Полная поддержка ДаOpera Android ? Safari iOS Полная поддержка 13.3Samsung Internet Android Полная поддержка 5.0
id
Экспериментальная
Chrome Полная поддержка 51Edge Полная поддержка 18Firefox Полная поддержка 60IE Нет поддержки НетOpera Полная поддержка ДаSafari Полная поддержка 13WebView Android Полная поддержка 51Chrome Android Полная поддержка 51Firefox Android Полная поддержка ДаOpera Android ? Safari iOS Полная поддержка 13.3Samsung Internet Android Полная поддержка 5.0
name (from CredentialUserData mixin)
Экспериментальная
Chrome Нет поддержки 51 — 52
Замечания
Нет поддержки 51 — 52
Замечания
Замечания See Bug 602980.
Edge ? Firefox Нет поддержки НетIE Нет поддержки НетOpera ? Safari ? WebView Android Нет поддержки 51 — 52
Замечания
Нет поддержки 51 — 52
Замечания
Замечания See Bug 602980.
Chrome Android Нет поддержки 51 — 52
Замечания
Нет поддержки 51 — 52
Замечания
Замечания See Bug 602980.
Firefox Android Нет поддержки НетOpera Android ? Safari iOS ? Samsung Internet Android Нет поддержки 5.0 — 6.0
Замечания
Нет поддержки 5.0 — 6.0
Замечания
Замечания See Bug 602980.
type
Экспериментальная
Chrome Полная поддержка 51Edge Полная поддержка 18Firefox Полная поддержка 60IE Нет поддержки НетOpera Полная поддержка ДаSafari Полная поддержка 13WebView Android Полная поддержка 51Chrome Android Полная поддержка 51Firefox Android Полная поддержка ДаOpera Android ? Safari iOS Полная поддержка 13.3Samsung Internet Android Полная поддержка 5.0

Легенда

Полная поддержка  
Полная поддержка
Нет поддержки  
Нет поддержки
Совместимость неизвестна  
Совместимость неизвестна
Экспериментальная. Ожидаемое поведение может измениться в будущем.
Экспериментальная. Ожидаемое поведение может измениться в будущем.
Смотрите замечания реализации.
Смотрите замечания реализации.

CredentialsContainer

Update compatibility data on GitHub
КомпьютерыМобильные
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome для AndroidFirefox для AndroidOpera для AndroidSafari on iOSSamsung Internet
CredentialsContainer
Экспериментальная
Chrome Полная поддержка 51Edge Полная поддержка 18Firefox Полная поддержка ДаIE Нет поддержки НетOpera Нет поддержки НетSafari Полная поддержка 13WebView Android Полная поддержка 51Chrome Android Полная поддержка 51Firefox Android Полная поддержка ДаOpera Android Нет поддержки НетSafari iOS Полная поддержка 13.3Samsung Internet Android Полная поддержка 5.0
create
Экспериментальная
Chrome Полная поддержка 60Edge Полная поддержка 18Firefox Полная поддержка ДаIE Нет поддержки НетOpera Нет поддержки НетSafari Полная поддержка 13WebView Android Полная поддержка 60Chrome Android Полная поддержка 60Firefox Android Полная поддержка ДаOpera Android Нет поддержки НетSafari iOS Полная поддержка 13.3Samsung Internet Android Полная поддержка 8.0
get
Экспериментальная
Chrome Полная поддержка 51Edge Полная поддержка 18Firefox Полная поддержка ДаIE Нет поддержки НетOpera Нет поддержки НетSafari Полная поддержка 13WebView Android Полная поддержка 51Chrome Android Полная поддержка 51Firefox Android Полная поддержка ДаOpera Android Нет поддержки НетSafari iOS Полная поддержка 13.3Samsung Internet Android Полная поддержка 5.0
preventSilentAccess
Экспериментальная
Chrome Полная поддержка 60
Полная поддержка 60
Нет поддержки 51 — 60
Альтернативное имя
Альтернативное имя Использует нестандартное имя: requireUserMediation
Edge Полная поддержка ≤79Firefox Полная поддержка ДаIE Нет поддержки НетOpera Нет поддержки НетSafari Нет поддержки НетWebView Android Полная поддержка 60
Полная поддержка 60
Нет поддержки 51 — 60
Альтернативное имя
Альтернативное имя Использует нестандартное имя: requireUserMediation
Chrome Android Полная поддержка 60
Полная поддержка 60
Нет поддержки 51 — 60
Альтернативное имя
Альтернативное имя Использует нестандартное имя: requireUserMediation
Firefox Android Полная поддержка ДаOpera Android Нет поддержки НетSafari iOS Нет поддержки НетSamsung Internet Android Полная поддержка 8.0
Полная поддержка 8.0
Нет поддержки 5.0 — 8.0
Альтернативное имя
Альтернативное имя Использует нестандартное имя: requireUserMediation
store
Экспериментальная
Chrome Полная поддержка 51Edge Полная поддержка ≤79Firefox Полная поддержка ДаIE Нет поддержки НетOpera Нет поддержки НетSafari ? WebView Android Полная поддержка 51Chrome Android Полная поддержка 51Firefox Android Полная поддержка ДаOpera Android Нет поддержки НетSafari iOS ? Samsung Internet Android Полная поддержка 5.0

Легенда

Полная поддержка  
Полная поддержка
Нет поддержки  
Нет поддержки
Совместимость неизвестна  
Совместимость неизвестна
Экспериментальная. Ожидаемое поведение может измениться в будущем.
Экспериментальная. Ожидаемое поведение может измениться в будущем.
Использует нестандартное имя.
Использует нестандартное имя.

PublicKeyCredential

Update compatibility data on GitHub
КомпьютерыМобильные
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome для AndroidFirefox для AndroidOpera для AndroidSafari on iOSSamsung Internet
PublicKeyCredentialChrome Полная поддержка 67
Полная поддержка 67
Полная поддержка 65
Замечания Отключено
Замечания Only supports USB U2F tokens.
Отключено From version 65: this feature is behind the Web Authentication API preference (needs to be set to Enabled). To change preferences in Chrome, visit chrome://flags.
Edge Полная поддержка 18Firefox Полная поддержка 60
Замечания
Полная поддержка 60
Замечания
Замечания Only supports USB U2F tokens.
IE Нет поддержки НетOpera Нет поддержки НетSafari Полная поддержка 13WebView Android Полная поддержка 70Chrome Android Полная поддержка 70Firefox Android Полная поддержка 60
Замечания
Полная поддержка 60
Замечания
Замечания Only supports USB U2F tokens.
Opera Android Нет поддержки НетSafari iOS Полная поддержка 13.3Samsung Internet Android Нет поддержки Нет
getClientExtensionResultsChrome Полная поддержка 67
Полная поддержка 67
Полная поддержка 65
Замечания Отключено
Замечания Only supports USB U2F tokens.
Отключено From version 65: this feature is behind the Web Authentication API preference (needs to be set to Enabled). To change preferences in Chrome, visit chrome://flags.
Edge Полная поддержка 18Firefox Полная поддержка 60
Замечания
Полная поддержка 60
Замечания
Замечания Only supports USB U2F tokens.
IE Нет поддержки НетOpera Нет поддержки НетSafari Полная поддержка 13WebView Android Полная поддержка 70Chrome Android Полная поддержка 70Firefox Android Полная поддержка 60
Замечания
Полная поддержка 60
Замечания
Замечания Only supports USB U2F tokens.
Opera Android Нет поддержки НетSafari iOS Полная поддержка 13.3Samsung Internet Android Нет поддержки Нет
isUserVerifyingPlatformAuthenticatorAvailableChrome Полная поддержка 67
Полная поддержка 67
Полная поддержка 65
Замечания Отключено
Замечания Only supports USB U2F tokens.
Отключено From version 65: this feature is behind the Web Authentication API preference (needs to be set to Enabled). To change preferences in Chrome, visit chrome://flags.
Edge Полная поддержка 18Firefox Полная поддержка 60
Замечания
Полная поддержка 60
Замечания
Замечания Only supports USB U2F tokens.
IE Нет поддержки НетOpera Нет поддержки НетSafari Полная поддержка 13WebView Android Полная поддержка 70Chrome Android Полная поддержка 70Firefox Android Полная поддержка 60
Замечания
Полная поддержка 60
Замечания
Замечания Only supports USB U2F tokens.
Opera Android Нет поддержки НетSafari iOS Полная поддержка 13.3Samsung Internet Android Нет поддержки Нет
rawIdChrome Полная поддержка 67
Полная поддержка 67
Полная поддержка 65
Замечания Отключено
Замечания Only supports USB U2F tokens.
Отключено From version 65: this feature is behind the Web Authentication API preference (needs to be set to Enabled). To change preferences in Chrome, visit chrome://flags.
Edge Полная поддержка 18Firefox Полная поддержка 60
Замечания
Полная поддержка 60
Замечания
Замечания Only supports USB U2F tokens.
IE Нет поддержки НетOpera Нет поддержки НетSafari Полная поддержка 13WebView Android Полная поддержка 70Chrome Android Полная поддержка 70Firefox Android Полная поддержка 60
Замечания
Полная поддержка 60
Замечания
Замечания Only supports USB U2F tokens.
Opera Android Нет поддержки НетSafari iOS Полная поддержка 13.3Samsung Internet Android Нет поддержки Нет
responseChrome Полная поддержка 67
Полная поддержка 67
Полная поддержка 65
Замечания Отключено
Замечания Only supports USB U2F tokens.
Отключено From version 65: this feature is behind the Web Authentication API preference (needs to be set to Enabled). To change preferences in Chrome, visit chrome://flags.
Edge Полная поддержка 18Firefox Полная поддержка 60
Замечания
Полная поддержка 60
Замечания
Замечания Only supports USB U2F tokens.
IE Нет поддержки НетOpera Нет поддержки НетSafari Полная поддержка 13WebView Android Полная поддержка 70Chrome Android Полная поддержка 70Firefox Android Полная поддержка 60
Замечания
Полная поддержка 60
Замечания
Замечания Only supports USB U2F tokens.
Opera Android Нет поддержки НетSafari iOS Полная поддержка 13.3Samsung Internet Android Нет поддержки Нет

Легенда

Полная поддержка  
Полная поддержка
Нет поддержки  
Нет поддержки
Смотрите замечания реализации.
Смотрите замечания реализации.
Пользователь должен сам включить эту возможность.
Пользователь должен сам включить эту возможность.

AuthenticatorResponse

Update compatibility data on GitHub
КомпьютерыМобильные
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome для AndroidFirefox для AndroidOpera для AndroidSafari on iOSSamsung Internet
AuthenticatorResponseChrome Полная поддержка 67
Полная поддержка 67
Полная поддержка 65
Замечания Отключено
Замечания Only supports USB U2F tokens.
Отключено From version 65: this feature is behind the Web Authentication API preference (needs to be set to Enabled). To change preferences in Chrome, visit chrome://flags.
Edge Полная поддержка 18Firefox Полная поддержка 60
Замечания
Полная поддержка 60
Замечания
Замечания Only supports USB U2F tokens.
IE Нет поддержки НетOpera Нет поддержки НетSafari Полная поддержка 13WebView Android Полная поддержка 70Chrome Android Полная поддержка 70Firefox Android Полная поддержка 60
Замечания
Полная поддержка 60
Замечания
Замечания Only supports USB U2F tokens.
Opera Android Нет поддержки НетSafari iOS Полная поддержка 13.3Samsung Internet Android Нет поддержки Нет
clientDataJSONChrome Полная поддержка 67
Полная поддержка 67
Полная поддержка 65
Замечания Отключено
Замечания Only supports USB U2F tokens.
Отключено From version 65: this feature is behind the Web Authentication API preference (needs to be set to Enabled). To change preferences in Chrome, visit chrome://flags.
Edge Полная поддержка 18Firefox Полная поддержка 60
Замечания
Полная поддержка 60
Замечания
Замечания Only supports USB U2F tokens.
IE Нет поддержки НетOpera Нет поддержки НетSafari Полная поддержка 13WebView Android Полная поддержка 70Chrome Android Полная поддержка 70Firefox Android Полная поддержка 60
Замечания
Полная поддержка 60
Замечания
Замечания Only supports USB U2F tokens.
Opera Android Нет поддержки НетSafari iOS Полная поддержка 13.3Samsung Internet Android Нет поддержки Нет

Легенда

Полная поддержка  
Полная поддержка
Нет поддержки  
Нет поддержки
Смотрите замечания реализации.
Смотрите замечания реализации.
Пользователь должен сам включить эту возможность.
Пользователь должен сам включить эту возможность.

AuthenticatorAttestationResponse

Update compatibility data on GitHub
КомпьютерыМобильные
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome для AndroidFirefox для AndroidOpera для AndroidSafari on iOSSamsung Internet
AuthenticatorAttestationResponseChrome Полная поддержка 67
Полная поддержка 67
Полная поддержка 65
Замечания Отключено
Замечания Only supports USB U2F tokens.
Отключено From version 65: this feature is behind the Web Authentication API preference (needs to be set to Enabled). To change preferences in Chrome, visit chrome://flags.
Edge Полная поддержка 18Firefox Полная поддержка 60
Замечания
Полная поддержка 60
Замечания
Замечания Only supports USB U2F tokens.
IE Нет поддержки НетOpera Нет поддержки НетSafari Полная поддержка 13WebView Android Полная поддержка 70Chrome Android Полная поддержка 70Firefox Android Полная поддержка 60
Замечания
Полная поддержка 60
Замечания
Замечания Only supports USB U2F tokens.
Opera Android Нет поддержки НетSafari iOS Полная поддержка 13.3Samsung Internet Android Полная поддержка 10.0
attestationObjectChrome Полная поддержка 67
Полная поддержка 67
Полная поддержка 65
Замечания Отключено
Замечания Only supports USB U2F tokens.
Отключено From version 65: this feature is behind the Web Authentication API preference (needs to be set to Enabled). To change preferences in Chrome, visit chrome://flags.
Edge Полная поддержка 18Firefox Полная поддержка 60
Замечания
Полная поддержка 60
Замечания
Замечания Only supports USB U2F tokens.
IE Нет поддержки НетOpera Нет поддержки НетSafari Полная поддержка 13WebView Android Полная поддержка 70Chrome Android Полная поддержка 70Firefox Android Полная поддержка 60
Замечания
Полная поддержка 60
Замечания
Замечания Only supports USB U2F tokens.
Opera Android Нет поддержки НетSafari iOS Полная поддержка 13.3Samsung Internet Android Полная поддержка 10.0
getTransports
Экспериментальная
Chrome Нет поддержки НетEdge Нет поддержки НетFirefox Нет поддержки НетIE Нет поддержки НетOpera Нет поддержки НетSafari Нет поддержки НетWebView Android Нет поддержки НетChrome Android Нет поддержки НетFirefox Android Нет поддержки НетOpera Android Нет поддержки НетSafari iOS Нет поддержки НетSamsung Internet Android Нет поддержки Нет

Легенда

Полная поддержка  
Полная поддержка
Нет поддержки  
Нет поддержки
Экспериментальная. Ожидаемое поведение может измениться в будущем.
Экспериментальная. Ожидаемое поведение может измениться в будущем.
Смотрите замечания реализации.
Смотрите замечания реализации.
Пользователь должен сам включить эту возможность.
Пользователь должен сам включить эту возможность.

AuthenticatorAssertionResponse

Update compatibility data on GitHub
КомпьютерыМобильные
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome для AndroidFirefox для AndroidOpera для AndroidSafari on iOSSamsung Internet
AuthenticatorAssertionResponseChrome Полная поддержка 67
Полная поддержка 67
Полная поддержка 65
Замечания Отключено
Замечания Only supports USB U2F tokens.
Отключено From version 65: this feature is behind the Web Authentication API preference (needs to be set to Enabled). To change preferences in Chrome, visit chrome://flags.
Edge Полная поддержка 18Firefox Полная поддержка 60
Замечания
Полная поддержка 60
Замечания
Замечания Only supports USB U2F tokens.
IE Нет поддержки НетOpera Нет поддержки НетSafari Полная поддержка 13WebView Android Полная поддержка 70Chrome Android Полная поддержка 70Firefox Android Полная поддержка 60
Замечания
Полная поддержка 60
Замечания
Замечания Only supports USB U2F tokens.
Opera Android Нет поддержки НетSafari iOS Полная поддержка 13.3Samsung Internet Android Нет поддержки Нет
authenticatorDataChrome Полная поддержка 67
Полная поддержка 67
Полная поддержка 65
Замечания Отключено
Замечания Only supports USB U2F tokens.
Отключено From version 65: this feature is behind the Web Authentication API preference (needs to be set to Enabled). To change preferences in Chrome, visit chrome://flags.
Edge Полная поддержка 18Firefox Полная поддержка 60
Замечания
Полная поддержка 60
Замечания
Замечания Only supports USB U2F tokens.
IE Нет поддержки НетOpera Нет поддержки НетSafari Полная поддержка 13WebView Android Полная поддержка 70Chrome Android Полная поддержка 70Firefox Android Полная поддержка 60
Замечания
Полная поддержка 60
Замечания
Замечания Only supports USB U2F tokens.
Opera Android Нет поддержки НетSafari iOS Полная поддержка 13.3Samsung Internet Android Нет поддержки Нет
signatureChrome Полная поддержка 67
Полная поддержка 67
Полная поддержка 65
Замечания Отключено
Замечания Only supports USB U2F tokens.
Отключено From version 65: this feature is behind the Web Authentication API preference (needs to be set to Enabled). To change preferences in Chrome, visit chrome://flags.
Edge Полная поддержка 18Firefox Полная поддержка 60
Замечания
Полная поддержка 60
Замечания
Замечания Only supports USB U2F tokens.
IE Нет поддержки НетOpera Нет поддержки НетSafari Полная поддержка 13WebView Android Полная поддержка 70Chrome Android Полная поддержка 70Firefox Android Полная поддержка 60
Замечания
Полная поддержка 60
Замечания
Замечания Only supports USB U2F tokens.
Opera Android Нет поддержки НетSafari iOS Полная поддержка 13.3Samsung Internet Android Нет поддержки Нет
userHandleChrome Полная поддержка 67
Полная поддержка 67
Полная поддержка 65
Замечания Отключено
Замечания Only supports USB U2F tokens.
Отключено From version 65: this feature is behind the Web Authentication API preference (needs to be set to Enabled). To change preferences in Chrome, visit chrome://flags.
Edge Полная поддержка 18Firefox Полная поддержка 60
Замечания
Полная поддержка 60
Замечания
Замечания Only supports USB U2F tokens.
IE Нет поддержки НетOpera Нет поддержки НетSafari Полная поддержка 13WebView Android Полная поддержка 70Chrome Android Полная поддержка 70Firefox Android Полная поддержка 60
Замечания
Полная поддержка 60
Замечания
Замечания Only supports USB U2F tokens.
Opera Android Нет поддержки НетSafari iOS Полная поддержка 13.3Samsung Internet Android Нет поддержки Нет

Легенда

Полная поддержка  
Полная поддержка
Нет поддержки  
Нет поддержки
Смотрите замечания реализации.
Смотрите замечания реализации.
Пользователь должен сам включить эту возможность.
Пользователь должен сам включить эту возможность.

PublicKeyCredentialCreationOptions

Update compatibility data on GitHub
КомпьютерыМобильные
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome для AndroidFirefox для AndroidOpera для AndroidSafari on iOSSamsung Internet
PublicKeyCredentialCreationOptions
Экспериментальная
Chrome Полная поддержка 67Edge Полная поддержка ≤79Firefox Полная поддержка 60IE Нет поддержки НетOpera Полная поддержка ДаSafari Полная поддержка 13WebView Android Нет поддержки НетChrome Android Полная поддержка 67Firefox Android ? Opera Android Полная поддержка ДаSafari iOS Полная поддержка 13.3Samsung Internet Android Нет поддержки Нет
attestation
Экспериментальная
Chrome Полная поддержка 67Edge Полная поддержка ≤79Firefox Полная поддержка 60IE Нет поддержки НетOpera ? Safari Полная поддержка 13WebView Android Нет поддержки НетChrome Android Полная поддержка 67Firefox Android ? Opera Android ? Safari iOS Полная поддержка 13.3Samsung Internet Android Нет поддержки Нет
authenticatorSelection
Экспериментальная
Chrome Полная поддержка 67Edge Полная поддержка ≤79Firefox Полная поддержка 60IE Нет поддержки НетOpera ? Safari Полная поддержка 13WebView Android Нет поддержки НетChrome Android Полная поддержка 67Firefox Android ? Opera Android ? Safari iOS Полная поддержка 13.3Samsung Internet Android Нет поддержки Нет
challenge
Экспериментальная
Chrome Полная поддержка 67Edge Полная поддержка ≤79Firefox Полная поддержка 60IE Нет поддержки НетOpera ? Safari Полная поддержка 13WebView Android Нет поддержки НетChrome Android Полная поддержка 67Firefox Android ? Opera Android ? Safari iOS Полная поддержка 13.3Samsung Internet Android Нет поддержки Нет
excludeCredentials
Экспериментальная
Chrome Полная поддержка 67Edge Полная поддержка ≤79Firefox Полная поддержка 60IE Нет поддержки НетOpera ? Safari Полная поддержка 13WebView Android Нет поддержки НетChrome Android Полная поддержка 67Firefox Android ? Opera Android ? Safari iOS Полная поддержка 13.3Samsung Internet Android Нет поддержки Нет
extensions
Экспериментальная
Chrome Полная поддержка 67Edge Полная поддержка ≤79Firefox Полная поддержка 60IE Нет поддержки НетOpera ? Safari Полная поддержка 13WebView Android Нет поддержки НетChrome Android Полная поддержка 67Firefox Android ? Opera Android ? Safari iOS Полная поддержка 13.3Samsung Internet Android Нет поддержки Нет
pubKeyCredParams
Экспериментальная
Chrome Полная поддержка 67Edge Полная поддержка ≤79Firefox Полная поддержка 60IE Нет поддержки НетOpera ? Safari Полная поддержка 13WebView Android Нет поддержки НетChrome Android Полная поддержка 67Firefox Android ? Opera Android ? Safari iOS Полная поддержка 13.3Samsung Internet Android Нет поддержки Нет
rp
Экспериментальная
Chrome Полная поддержка 67Edge Полная поддержка ≤79Firefox Полная поддержка 60IE Нет поддержки НетOpera Полная поддержка ДаSafari Полная поддержка 13WebView Android Нет поддержки НетChrome Android Полная поддержка 67Firefox Android ? Opera Android Полная поддержка ДаSafari iOS Полная поддержка 13.3Samsung Internet Android Нет поддержки Нет
timeout
Экспериментальная
Chrome Полная поддержка 67Edge Полная поддержка ≤79Firefox Полная поддержка 60IE Нет поддержки НетOpera ? Safari Полная поддержка 13WebView Android Нет поддержки НетChrome Android Полная поддержка 67Firefox Android ? Opera Android ? Safari iOS Полная поддержка 13.3Samsung Internet Android Нет поддержки Нет
user
Экспериментальная
Chrome Полная поддержка 67Edge Полная поддержка ≤79Firefox Полная поддержка 60IE Нет поддержки НетOpera ? Safari Полная поддержка 13WebView Android Нет поддержки НетChrome Android Полная поддержка 67Firefox Android ? Opera Android ? Safari iOS Полная поддержка 13.3Samsung Internet Android Нет поддержки Нет

Легенда

Полная поддержка  
Полная поддержка
Нет поддержки  
Нет поддержки
Совместимость неизвестна  
Совместимость неизвестна
Экспериментальная. Ожидаемое поведение может измениться в будущем.
Экспериментальная. Ожидаемое поведение может измениться в будущем.

PublicKeyCredentialRequestOptions

Update compatibility data on GitHub
КомпьютерыМобильные
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome для AndroidFirefox для AndroidOpera для AndroidSafari on iOSSamsung Internet
PublicKeyCredentialRequestOptions
Экспериментальная
Chrome Полная поддержка 67Edge Полная поддержка ≤79Firefox Полная поддержка 60IE Нет поддержки НетOpera Полная поддержка ДаSafari Полная поддержка 13WebView Android Полная поддержка 67Chrome Android Полная поддержка 67Firefox Android ? Opera Android Полная поддержка ДаSafari iOS Полная поддержка 13.3Samsung Internet Android Нет поддержки Нет
allowCredentials
Экспериментальная
Chrome Полная поддержка 67Edge Полная поддержка ≤79Firefox Полная поддержка 60IE Нет поддержки НетOpera Полная поддержка ДаSafari Полная поддержка 13WebView Android Полная поддержка 67Chrome Android Полная поддержка 67Firefox Android ? Opera Android Полная поддержка ДаSafari iOS Полная поддержка 13.3Samsung Internet Android Нет поддержки Нет
challenge
Экспериментальная
Chrome Полная поддержка 67Edge Полная поддержка ≤79Firefox Полная поддержка 60IE Нет поддержки НетOpera Полная поддержка ДаSafari Полная поддержка 13WebView Android Полная поддержка 67Chrome Android Полная поддержка 67Firefox Android ? Opera Android Полная поддержка ДаSafari iOS Полная поддержка 13.3Samsung Internet Android Нет поддержки Нет
extensions
Экспериментальная
Chrome Полная поддержка 67Edge Полная поддержка ≤79Firefox Полная поддержка 60IE Нет поддержки НетOpera Полная поддержка ДаSafari Полная поддержка 13WebView Android Полная поддержка 67Chrome Android Полная поддержка 67Firefox Android ? Opera Android Полная поддержка ДаSafari iOS Полная поддержка 13.3Samsung Internet Android Нет поддержки Нет
rpId
Экспериментальная
Chrome Полная поддержка 67Edge Полная поддержка ≤79Firefox Полная поддержка 60IE Нет поддержки НетOpera Полная поддержка ДаSafari Полная поддержка 13WebView Android Полная поддержка 67Chrome Android Полная поддержка 67Firefox Android ? Opera Android Полная поддержка ДаSafari iOS Полная поддержка 13.3Samsung Internet Android Нет поддержки Нет
timeout
Экспериментальная
Chrome Полная поддержка 67Edge Полная поддержка ≤79Firefox Полная поддержка 60IE Нет поддержки НетOpera Полная поддержка ДаSafari Полная поддержка 13WebView Android Полная поддержка 67Chrome Android Полная поддержка 67Firefox Android ? Opera Android Полная поддержка ДаSafari iOS Полная поддержка 13.3Samsung Internet Android Нет поддержки Нет
userVerification
Экспериментальная
Chrome Полная поддержка 67Edge Полная поддержка ≤79Firefox Полная поддержка 60IE Нет поддержки НетOpera Полная поддержка ДаSafari Полная поддержка 13WebView Android Полная поддержка 67Chrome Android Полная поддержка 67Firefox Android ? Opera Android Полная поддержка ДаSafari iOS Полная поддержка 13.3Samsung Internet Android Нет поддержки Нет

Легенда

Полная поддержка  
Полная поддержка
Нет поддержки  
Нет поддержки
Совместимость неизвестна  
Совместимость неизвестна
Экспериментальная. Ожидаемое поведение может измениться в будущем.
Экспериментальная. Ожидаемое поведение может измениться в будущем.

See also