Spec-Zone.ru › Web APIs

PublicKeyCredential

Базовая Широко доступная *

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с сентября 2021 года.

* Некоторые части этой функции могут иметь различный уровень поддержки.

  • Узнать больше
  • Подробнее о совместимости
  • Отправить отзыв

Безопасный контекст: Эта функция доступна только в безопасных контекстах (HTTPS) в некоторых или во всех поддерживающих браузерах.

Интерфейс PublicKeyCredential предоставляет информацию об паре открытый ключ / закрытый ключ, которая является идентификатором для входа в службу с использованием неподделываемой и устойчивой к утечке данных асимметричной пары ключей вместо пароля. Он наследует от Credential и является частью расширения API аутентификации веб-сайтов к API управления учетными данными.

Credential PublicKeyCredential

Примечание: Этот API ограничен контекстами верхнего уровня. Использование изнутри элемента <iframe> не повлияет на работу.

Свойства экземпляра

PublicKeyCredential.authenticatorAttachment Только для чтения

Строка, которая указывает механизм, с помощью которого реализация WebAuthn подключена к аутентификатору в момент завершения вызова navigator.credentials.create() или navigator.credentials.get().

PublicKeyCredential.id Только для чтения

Наследуется от Credential и переопределяется, чтобы быть кодированием base64url PublicKeyCredential.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.

Статические методы

PublicKeyCredential.isConditionalMediationAvailable()

Возвращает 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 92
60–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 92
60–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 92
60–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 92
60–92Only supports USB U2F tokens.
49 13 10.0 No
response 67 18
60Only supports USB U2F tokens.
54 13 70 92
60–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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API