CredentialsContainer: метод create()
Базовая Широко доступная *
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с января 2020 года.
* Некоторые части этой функции могут иметь различный уровень поддержки.
Безопасный контекст: Эта функция доступна только в безопасных контекстах (HTTPS), в некоторых или во всех поддерживающих браузерах.
Метод create() интерфейса CredentialsContainer создает новый кредит, который затем можно сохранить и позже получить с помощью метода navigator.credentials.get(). Полученный кредит может быть использован сайтом для аутентификации пользователя.
Этот метод поддерживает три разных типа кредита:
- Парольный кредит, который позволяет пользователю войти с помощью пароля.
- Федеративный кредит, который позволяет пользователю войти с помощью федеративного поставщика идентификации.
- Кредит с открытым ключом, который позволяет пользователю войти с помощью аутентификатора, такого как биометрический считыватель, встроенный в платформу, или съемный аппаратный токен.
Обратите внимание, что API управления федеративными учетными данными (FedCM) заменяет тип федеративного кредита.
Синтаксис
create() create(options)
Параметры
optionsНеобязательно-
Объект, содержащий параметры для запрошенного нового объекта
Credentials. Он может содержать следующие свойства:signalНеобязательно-
Экземпляр объекта
AbortSignal, который позволяет прервать текущую операциюcreate(). Прерванная операция может завершиться нормально (обычно, если прерывание было получено после завершения операции) или отклониться с исключениемAbortErrorDOMException.
Каждое из следующих свойств представляет собой тип кредита, который создается. Должно быть указано только одно из них:
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не были предоставлены (пустые). -
NotAllowedErrorDOMException -
Возможные причины:
- Использование было заблокировано политикой
publickey-credentials-createПолитики разрешений. - Функция вызывается в другом происхождении, но атрибут iframe
allowне задаёт соответствующую политикуpublickey-credentials-create. - Функция вызывается в другом происхождении, и
<iframe>не имеет временной активации.
- Использование было заблокировано политикой
-
AbortErrorDOMException -
Операция была прервана.
Примеры
Создание парольного кредита
В этом примере создается парольный кредит из объекта 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();
});
Некоторые из этих данных необходимо будет сохранить на сервере для будущих операций аутентификации по этому кредиту — например, открытый ключ, используемый алгоритм и допустимые механизмы передачи.
Примечание: См. Создание пары ключей и регистрация пользователя для получения дополнительной информации о работе общего потока.
Спецификации
Совместимость с браузерами
| Рабочий стол | Мобильное устройство | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| 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