PublicKeyCredential: parseRequestOptionsFromJSON() statische Methode
Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.
Die statische Methode parseRequestOptionsFromJSON()
der PublicKeyCredential
-Schnittstelle konvertiert eine JSON-Type-Repräsentation in eine PublicKeyCredentialRequestOptions
-Instanz.
Die Methode ist eine Komfortfunktion zum Umwandeln von Informationen, die von einem vertrauenden Server einer Webanwendung bereitgestellt werden, um ein bestehendes Anmeldedatum anzufordern.
Syntax
PublicKeyCredential.parseRequestOptionsFromJSON(options)
Parameter
options
-
Ein Objekt mit der gleichen Struktur wie eine
PublicKeyCredentialRequestOptions
-Instanz, jedoch mit base64url-codierten Zeichenfolgen anstelle von Puffer-Eigenschaften.
Rückgabewert
Eine PublicKeyCredentialRequestOptions
-Instanz.
Ausnahmen
EncodingError
DOMException
-
Wird ausgelöst, wenn ein Teil des
options
-Objekts nicht in einePublicKeyCredentialRequestOptions
-Instanz konvertiert werden kann. SecurityError
DOMException
-
Die RP-Domain ist nicht gültig.
Beschreibung
Der Web-Authentifizierungsprozess zum Authentifizieren eines (registrierten) Benutzers beinhaltet, dass ein vertrauender Server der Webanwendung Informationen zur Verfügung stellt, die benötigt werden, um ein bestehendes Anmeldedatum zu finden. Dazu gehören Details über die Benutzeridentität, das vertrauende Unternehmen, eine "Challenge" und optional, wo das Anmeldedatum zu suchen ist: beispielsweise auf einem lokal integrierten Authentifikator oder auf einem externen über USB, BLE und so weiter.
Die Webanwendung übergibt diese Informationen an einen Authentifikator, um das Anmeldedatum zu finden, indem sie navigator.credentials.get()
mit einem Argument aufruft, das die vom Server bereitgestellten Daten als PublicKeyCredentialRequestOptions
-Instanz enthält.
Die Spezifikation definiert nicht, wie die Informationen zum Anfordern eines Anmeldedatums versendet werden.
Ein praktischer Ansatz besteht darin, dass der Server die Informationen in eine JSON-Type-Repräsentation einer PublicKeyCredentialRequestOptions
-Instanz einkapselt, die deren Struktur widerspiegelt, aber Puffer-Eigenschaften wie die challenge
als base64url-Zeichenfolgen codiert. Dieses Objekt kann in einen JSON-String serialisiert, an die Webanwendung gesendet und deserialisiert werden und dann mit parseRequestOptionsFromJSON()
in eine PublicKeyCredentialRequestOptions
-Instanz umgewandelt werden.
Beispiele
Beim Autorisieren eines bereits registrierten Benutzers liefert ein vertrauender Server der Webanwendung Informationen über die angeforderten Anmeldedaten, das vertrauende Unternehmen und eine Challenge. Der Code unten definiert diese Informationen in der im options
-Parameter oben beschriebenen Form:
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",
}
Da dieses Objekt nur JSON-Datentypen verwendet, kann es mithilfe von JSON.stringify()
in JSON serialisiert und an die Webanwendung gesendet werden.
JSON.stringify(requestCredentialOptionsJSON);
Die Webanwendung kann den JSON-String zurück in ein requestCredentialOptionsJSON
-Objekt deserialisieren (nicht gezeigt). Die parseRequestOptionsFromJSON()
-Methode wird verwendet, um dieses Objekt in die Form zu konvertieren, die in navigator.credentials.get()
verwendet werden kann:
// 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);
});
Spezifikationen
Specification |
---|
Web Authentication: An API for accessing Public Key Credentials - Level 3 # dom-publickeycredential-parserequestoptionsfromjson |
Browser-Kompatibilität
BCD tables only load in the browser