PublicKeyCredential: parseRequestOptionsFromJSON() статический метод
Безопасный контекст: Этот функционал доступен только в безопасных контекстах (HTTPS) в некоторых или во всех поддерживающих браузерах.
Статический метод parseRequestOptionsFromJSON() интерфейса PublicKeyCredential преобразует представление типа JSON в экземпляр PublicKeyCredentialRequestOptions.
Метод является удобной функцией для преобразования информации, предоставленной сервером, предоставляющим услугу, веб-приложению для запроса существующего идентификатора.
Синтаксис
PublicKeyCredential.parseRequestOptionsFromJSON(options)
Параметры
options-
Объект с такой же структурой, как у экземпляра
PublicKeyCredentialRequestOptions, но с использованием строк, закодированных в формате base64url, вместо свойств буфера.
Значение возврата
Экземпляр PublicKeyCredentialRequestOptions.
Исключения
-
EncodingErrorDOMException -
Выбрасывается, если какая-либо часть объекта
optionsне может быть преобразована в экземплярPublicKeyCredentialRequestOptions.
Описание
Процесс проверки подлинности в веб-приложении для аутентификации (зарегистрированного) пользователя включает в себя отправку сервером, предоставляющим услугу, веб-приложению информации, необходимой для поиска существующего идентификатора, включая данные об идентификации пользователя, сервере, предоставляющем услугу, «вызове» и, необязательно, местоположение для поиска идентификатора: например, на встроенном локальном аутентификаторе или на внешнем по USB, BLE и так далее. Веб-приложение передает эту информацию аутентификатору для поиска идентификатора, вызвав navigator.credentials.get() с аргументом, содержащим данные, предоставленные сервером, в качестве экземпляра PublicKeyCredentialRequestOptions.
Спецификация не определяет, как отправляется информация, необходимая для запроса идентификатора. Удобный подход заключается в том, чтобы сервер упаковывал информацию в представление типа JSON экземпляра PublicKeyCredentialRequestOptions, которое отражает его структуру, но кодирует свойства буфера, такие как challenge, в виде строк, закодированных в формате base64url. Этот объект может быть сериализован в строку JSON, отправлен веб-приложению, десериализован и затем преобразован в экземпляр PublicKeyCredentialRequestOptions с помощью parseRequestOptionsFromJSON().
Примеры
При авторизации уже зарегистрированного пользователя сервер, предоставляющий услугу, предоставит веб-приложению информацию об искомых идентификаторах, сервере, предоставляющем услугу, и вызове. Приведенный ниже код определяет эту информацию в форме, описанной в параметре options выше:
const requestCredentialOptionsJSON = {
challenge: new Uint8Array([139, 66, 181, 87, 7, 203, ...]),
rpId: "acme.com",
allowCredentials: [{
type: "public-key",
id: new Uint8Array([64, 66, 25, 78, 168, 226, 174, ...])
}],
userVerification: "required",
}
Поскольку этот объект использует только типы данных JSON, его можно сериализовать в JSON с помощью JSON.stringify() и отправить веб-приложению.
JSON.stringify(requestCredentialOptionsJSON);
Веб-приложение может десериализовать строку JSON обратно в объект requestCredentialOptionsJSON (не показано). Метод parseRequestOptionsFromJSON() используется для преобразования этого объекта в форму, которую можно использовать в navigator.credentials.get():
// Convert options to form used by get()
const publicKey = PublicKeyCredential.parseRequestOptionsFromJSON(
requestCredentialOptionsJSON, // JSON-type representation
);
navigator.credentials
.get({ publicKey })
.then((returnedCredentialInfo) => {
// Handle the returned credential information here.
})
.catch((err) => {
console.error(err);
});
Спецификации
Совместимость с браузерами
| Рабочий стол | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
parseRequestOptionsFromJSON_static |
129 | 129 | 119 | 115 | Нет | 129 | 119 | 86 | Нет | Нет | Нет |
См. также
© 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/parseRequestOptionsFromJSON_static