PublicKeyCredential
Базовая Широко доступная *
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с сентября 2021 года.
* Некоторые части этой функции могут иметь различный уровень поддержки.
Безопасный контекст: Эта функция доступна только в безопасных контекстах (HTTPS) в некоторых или во всех поддерживающих браузерах.
Интерфейс PublicKeyCredential предоставляет информацию об паре открытый ключ / закрытый ключ, которая является идентификатором для входа в службу с использованием неподделываемой и устойчивой к утечке данных асимметричной пары ключей вместо пароля. Он наследует от Credential и является частью расширения API аутентификации веб-сайтов к API управления учетными данными.
Примечание: Этот API ограничен контекстами верхнего уровня. Использование изнутри элемента <iframe> не повлияет на работу.
Свойства экземпляра
-
PublicKeyCredential.authenticatorAttachmentТолько для чтения -
Строка, которая указывает механизм, с помощью которого реализация WebAuthn подключена к аутентификатору в момент завершения вызова
navigator.credentials.create()илиnavigator.credentials.get(). -
PublicKeyCredential.idТолько для чтения -
Наследуется от
Credentialи переопределяется, чтобы быть кодированием base64urlPublicKeyCredential.rawId. -
PublicKeyCredential.rawIdТолько для чтения -
ArrayBuffer, содержащий глобально уникальный идентификатор для этогоPublicKeyCredential. Этот идентификатор может быть использован для поиска учетных данных для будущих вызововnavigator.credentials.get(). -
PublicKeyCredential.responseТолько для чтения -
Экземпляр объекта
AuthenticatorResponse. Это либо объект типаAuthenticatorAttestationResponse, еслиPublicKeyCredentialбыл результатом вызоваnavigator.credentials.create(), либо объекта типаAuthenticatorAssertionResponse, еслиPublicKeyCredentialбыл результатом вызоваnavigator.credentials.get(). PublicKeyCredential.typeТолько для чтения-
Наследуется от
Credential. Всегда устанавливается в значениеpublic-keyдля экземпляровPublicKeyCredential.
Статические методы
-
Возвращает
Promise, который разрешается доtrueесли условная медиация доступна. PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable()-
Возвращает
Promise, который разрешается доtrueесли аутентификатор, привязанный к платформе, способен к верификации пользователя. PublicKeyCredential.parseCreationOptionsFromJSON()-
Удобный метод для десериализации данных регистрации учетных данных, отправленных сервером, при регистрации пользователя с учетными данными.
PublicKeyCredential.parseRequestOptionsFromJSON()-
Удобный метод для десериализации данных запроса учетных данных, отправленных сервером, при аутентификации зарегистрированного пользователя.
Методы экземпляра
PublicKeyCredential.getClientExtensionResults()-
Если были запрошены какие-либо расширения, этот метод вернёт результаты обработки этих расширений.
PublicKeyCredential.toJSON()-
Удобный метод для создания строкового представления JSON объекта
PublicKeyCredentialдля отправки на сервер при регистрации пользователя с учетными данными и аутентификации зарегистрированного пользователя.
Примеры
Создание нового экземпляра PublicKeyCredential
Здесь мы используем navigator.credentials.create() для генерации новой учетной записи.
const createCredentialOptions = {
publicKey: {
challenge: new Uint8Array([
21, 31, 105 /* 29 more random bytes generated by the server */,
]),
rp: {
name: "Example CORP",
id: "login.example.com",
},
user: {
id: new Uint8Array(16),
name: "canand@example.com",
displayName: "Carina Anand",
},
pubKeyCredParams: [
{
type: "public-key",
alg: -7,
},
],
},
};
navigator.credentials
.create(createCredentialOptions)
.then((newCredentialInfo) => {
const response = newCredentialInfo.response;
const clientExtensionsResults =
newCredentialInfo.getClientExtensionResults();
})
.catch((err) => {
console.error(err);
});
Получение существующего экземпляра PublicKeyCredential
Здесь мы получаем существующую учетную запись из аутентификатора, используя navigator.credentials.get().
const requestCredentialOptions = {
publicKey: {
challenge: new Uint8Array([
/* bytes sent from the server */
]),
},
};
navigator.credentials
.get(requestCredentialOptions)
.then((credentialInfoAssertion) => {
// send assertion response back to the server
// to proceed with the control of the credential
})
.catch((err) => {
console.error(err);
});
Спецификации
| Спецификация |
|---|
| Web Authentication: API для доступа к учетным данным с открытым ключом - Уровень 3 # iface-pkcredential |
Совместимость браузеров
| Настольные | Мобильные | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на IOS | Samsung Internet | WebView Android | |
PublicKeyCredential |
67 | 18 | 60Only supports USB U2F tokens. |
54 | 13 | 70 | 9260–92Only supports USB U2F tokens. |
49 | 13 | 10.0 | No |
authenticatorAttachment |
98 | 98 | 120 | 84 | 15.5 | 98 | 120 | 68 | 15.5 | 18.0 | No |
getClientCapabilities_static |
133 | 133 | 135 | No | 17.4 | 133 | 135 | No | 17.4 | No | No |
getClientExtensionResults |
67 | 18 | 60Only supports USB U2F tokens. |
54 | 13 | 70 | 9260–92Only supports USB U2F tokens. |
49 | 13 | 10.0 | No |
isConditionalMediationAvailable_static |
108 | 108 | 119 | 94 | 16 | 108 | 119 | 73 | 16 | 21.0 | No |
isUserVerifyingPlatformAuthenticatorAvailable_static |
67 | 18 | 60Only supports USB U2F tokens. |
54 | 13 | 70 | 9260–92Only supports USB U2F tokens. |
49 | 13 | 10.0 | No |
parseCreationOptionsFromJSON_static |
129 | 129 | 119 | 115 | No | 129 | 119 | 86 | No | No | No |
parseRequestOptionsFromJSON_static |
129 | 129 | 119 | 115 | No | 129 | 119 | 86 | No | No | No |
rawId |
67 | 18 | 60Only supports USB U2F tokens. |
54 | 13 | 70 | 9260–92Only supports USB U2F tokens. |
49 | 13 | 10.0 | No |
response |
67 | 18 | 60Only supports USB U2F tokens. |
54 | 13 | 70 | 9260–92Only supports USB U2F tokens. |
49 | 13 | 10.0 | No |
signalAllAcceptedCredentials_static |
132 | No | No | 117 | No | No | No | No | No | No | No |
signalCurrentUserDetails_static |
132 | No | No | 117 | No | No | No | No | No | No | No |
signalUnknownCredential_static |
132 | No | No | 117 | No | No | No | No | No | No | No |
toJSON |
129 | 129 | 119 | 115 | No | 129 | 119 | 86 | No | No | No |
См. также
- Родительский интерфейс
Credential
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/PublicKeyCredential