Estoy tratando de configurar WebAuthn en nuestra página de inicio de sesión. Estoy en la parte donde necesito hacer la clave pública usando navigator.credentials.create()
. En Chrome, sigo recibiendo el siguiente error: Uncaught (in promise) DOMException: The operation either timed out or was not allowed. See: https://www.w3.org/TR/webauthn-2/#sctn-privacy-considerations-client.
Aquí está el código relevante:
if (isAvailable) { // Get challenge from server fetch("WebAuthn/WebAuthn.ashx", { method: "POST" }) .then(res => res.json()) .then(res => { const publicKeyCredentialCreationOptions = { challenge: Uint8Array.from( res.data, c => c.charCodeAt(0)), rp: { id: "localhost", name: "Company Name" }, authenticatorSelection: { authenticatorAttachment: "platform", userVerification: "discouraged" }, pubKeyCredParams: [{alg: -7, type: "public-key"}], user: { id: Uint8Array.from( "UZSL85T9AFC", c => c.charCodeAt(0)), displayName: "User", name: document.getElementById("tbUser").value // taken from aspx form } }; const credential = navigator.credentials.create({ publicKey: publicKeyCredentialCreationOptions }); }); }
Algunos datos adicionales que pueden ser de utilidad:
En primer lugar, puede probar usando el autenticador virtual en Chrome, vea la imagen a continuación.
En Windows, puede configurar Windows Hello como autenticador y probarlo más tarde.
Ahora algunas notas para su problema
Me las arreglé para hacerlo funcionar... Puedes intentar mirar mi código de ejemplo y usarlos, solo 2 archivos
Todavía lo estoy limpiando para llegar al código de producción (por ejemplo, usando JWT / Sessions al pasar información entre el front-end y el back-end.
Si todavía tiene problemas, podemos hablar aquí... https://github.com/ais-one/cookbook/discussions
En mi caso, mi lista de algoritmos de clave pública admitidos era demasiado limitada para admitir el archivo adjunto del autenticador de la platform
. Ahora uso esta lista de algoritmos y funciona como debería.
{"pubKeyCredParams": [ { "type": "public-key", "alg": -7 }, { "type": "public-key", "alg": -8 }, { "type": "public-key", "alg": -36 }, { "type": "public-key", "alg": -37 }, { "type": "public-key", "alg": -38 }, { "type": "public-key", "alg": -39 }, { "type": "public-key", "alg": -257 }, { "type": "public-key", "alg": -258 }, { "type": "public-key", "alg": -259 }]}