Spec-Zone.ru › Web APIs

CredentialsContainer: метод create()

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

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

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

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

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

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

Этот метод поддерживает три разных типа кредита:

  • Парольный кредит, который позволяет пользователю войти с помощью пароля.
  • Федеративный кредит, который позволяет пользователю войти с помощью федеративного поставщика идентификации.
  • Кредит с открытым ключом, который позволяет пользователю войти с помощью аутентификатора, такого как биометрический считыватель, встроенный в платформу, или съемный аппаратный токен.

Обратите внимание, что API управления федеративными учетными данными (FedCM) заменяет тип федеративного кредита.

Синтаксис

create()
create(options)

Параметры

options Необязательно

Объект, содержащий параметры для запрошенного нового объекта Credentials. Он может содержать следующие свойства:

signal Необязательно

Экземпляр объекта AbortSignal, который позволяет прервать текущую операцию create(). Прерванная операция может завершиться нормально (обычно, если прерывание было получено после завершения операции) или отклониться с исключением AbortError DOMException.

Каждое из следующих свойств представляет собой тип кредита, который создается. Должно быть указано только одно из них:

federated Необязательно

Объект FederatedCredentialInit, содержащий требования для создания кредита федеративного поставщика идентификации.

password Необязательно

Объект PasswordCredentialInit, содержащий требования для создания парольного кредита.

publicKey Необязательно

Объект PublicKeyCredentialCreationOptions, содержащий требования для создания кредита с открытым ключом. Приводит к вызову create() для запроса к пользовательскому агенту о создании новых учетных данных через аутентификатор — для регистрации новой учетной записи или для ассоциации новой пары асимметричных ключей с существующей учетной записью.

Примечание: Использование create() с параметром publicKey может быть заблокировано политикой publickey-credentials-create Политики разрешений, установленной на вашем сервере.

Значение возврата

Объект Promise, который разрешается одним из следующих:

  • Объект FederatedCredential, если тип кредита был federated.
  • Объект PasswordCredential, если тип кредита был password.
  • Объект PublicKeyCredential, если тип кредита был publicKey.

Если ни один объект кредита не может быть создан, обещание разрешается с null.

Исключения

TypeError

В случае запроса на создание PasswordCredential, id, origin, или password не были предоставлены (пустые).

NotAllowedError DOMException

Возможные причины:

  • Использование было заблокировано политикой publickey-credentials-create Политики разрешений.
  • Функция вызывается в другом происхождении, но атрибут iframe allow не задаёт соответствующую политику publickey-credentials-create.
  • Функция вызывается в другом происхождении, и <iframe> не имеет временной активации.
AbortError DOMException

Операция была прервана.

Примеры

Создание парольного кредита

В этом примере создается парольный кредит из объекта PasswordCredentialInit.

const credInit = {
  id: "1234",
  name: "Serpentina",
  origin: "https://example.org",
  password: "the last visible dog",
};

const makeCredential = document.querySelector("#make-credential");

makeCredential.addEventListener("click", async () => {
  const cred = await navigator.credentials.create({
    password: credInit,
  });
  console.log(cred.name);
  // Serpentina
  console.log(cred.password);
  // the last visible dog
});

Создание федеративного кредита

В этом примере создается федеративный кредит из объекта FederatedCredentialInit.

const credInit = {
  id: "1234",
  name: "Serpentina",
  origin: "https://example.org",
  protocol: "openidconnect",
  provider: "https://provider.example.org",
};

const makeCredential = document.querySelector("#make-credential");

makeCredential.addEventListener("click", async () => {
  const cred = await navigator.credentials.create({
    federated: credInit,
  });
  console.log(cred.name);
  console.log(cred.provider);
});

Создание кредита с открытым ключом

В этом примере создается кредит с открытым ключом из объекта PublicKeyCredentialCreationOptions.

const publicKey = {
  challenge: challengeFromServer,
  rp: { id: "acme.com", name: "ACME Corporation" },
  user: {
    id: new Uint8Array([79, 252, 83, 72, 214, 7, 89, 26]),
    name: "jamiedoe",
    displayName: "Jamie Doe",
  },
  pubKeyCredParams: [{ type: "public-key", alg: -7 }],
};

const publicKeyCredential = await navigator.credentials.create({ publicKey });

Вызов create(), если он успешен, возвращает обещание, которое разрешается объектом PublicKeyCredential, представляющим кредит с открытым ключом, который позже можно использовать для аутентификации пользователя с помощью вызова get() WebAuthn. Его свойство PublicKeyCredential.response содержит объект AuthenticatorAttestationResponse, предоставляющий доступ к нескольким полезным данным, включая данные аутентификатора, открытый ключ, механизмы передачи и многое другое.

navigator.credentials.create({ publicKey }).then((publicKeyCredential) => {
  const response = publicKeyCredential.response;

  // Access attestationObject ArrayBuffer
  const attestationObj = response.attestationObject;

  // Access client JSON
  const clientJSON = response.clientDataJSON;

  // Return authenticator data ArrayBuffer
  const authenticatorData = response.getAuthenticatorData();

  // Return public key ArrayBuffer
  const pk = response.getPublicKey();

  // Return public key algorithm identifier
  const pkAlgo = response.getPublicKeyAlgorithm();

  // Return permissible transports array
  const transports = response.getTransports();
});

Некоторые из этих данных необходимо будет сохранить на сервере для будущих операций аутентификации по этому кредиту — например, открытый ключ, используемый алгоритм и допустимые механизмы передачи.

Примечание: См. Создание пары ключей и регистрация пользователя для получения дополнительной информации о работе общего потока.

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

Спецификация
Управление учетными данными уровня 1
# dom-credentialscontainer-create

Совместимость с браузерами

Рабочий стол Мобильное устройство
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
create 60 18 60 47 13 60 60 44 13 8.0 60
publicKey_option 67 18 60 54 13 70 60 49 13 10.0 Нет

© 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/CredentialsContainer/create

Spec-Zone.ru

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