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()
des PublicKeyCredential
-Interfaces konvertiert eine JSON Typdarstellung in eine PublicKeyCredentialRequestOptions
-Instanz.
Die Methode ist eine praktische Funktion, um Informationen, die von einem vertrauenswürdigen Server an eine Webanwendung bereitgestellt werden, in Anfrage zu einer vorhandenen Berechtigung umzuwandeln.
Syntax
PublicKeyCredential.parseRequestOptionsFromJSON(options)
Parameter
options
-
Ein Objekt mit derselben 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 umgewandelt werden kann.
Beschreibung
Der Web-Authentifizierungsprozess zur Authentifizierung eines (registrierten) Benutzers beinhaltet, dass ein vertrauenswürdiger Server der Webanwendung die Informationen sendet, die benötigt werden, um eine vorhandene Berechtigung zu finden, einschließlich Angaben zur Benutzeridentität, der vertrauenswürdigen Partei, einer „Challenge“ und optional, wo die Berechtigung zu suchen ist: beispielsweise auf einem lokalen integrierten Authentifikator oder auf einem externen über USB, BLE usw.
Die Webanwendung übergibt diese Informationen an einen Authentifikator, um die Berechtigung 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, die für die Anforderung einer Berechtigung benötigt werden, gesendet werden.
Ein praktischer Ansatz ist, dass der Server die Informationen in einer JSON Typdarstellung einer PublicKeyCredentialRequestOptions
-Instanz kapselt, die deren Struktur widerspiegelt, jedoch die Puffer-Eigenschaften wie die challenge
als base64url-Zeichenfolgen codiert.
Dieses Objekt kann in eine JSON-Zeichenfolge serialisiert, an die Webanwendung gesendet und deserialisiert werden, und dann mithilfe von parseRequestOptionsFromJSON()
in eine PublicKeyCredentialRequestOptions
-Instanz umgewandelt werden.
Beispiele
Beim Autorisieren eines bereits registrierten Benutzers wird ein vertrauenswürdiger Server der Webanwendung Informationen über die angeforderten Berechtigungen, die vertrauenswürdige Partei und eine Challenge bereitstellen.
Der folgende Code definiert diese Informationen in der im options
-Parameter 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 unter Verwendung von JSON.stringify()
in JSON serialisiert und an die Webanwendung gesendet werden.
JSON.stringify(requestCredentialOptionsJSON);
Die Webanwendung kann die JSON-Zeichenfolge zurück in ein requestCredentialOptionsJSON
-Objekt deserialisieren (nicht gezeigt).
Die Methode parseRequestOptionsFromJSON()
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