Не могу понять ошибку API WebAuthn из JavaScript - PullRequest
0 голосов
/ 28 декабря 2018

В настоящее время я создаю конечную точку регистрации AJAX для Django, чтобы разрешить аутентификацию FIDO2 (физический вход с аппаратного ключа).Это следование примеру / документации из официальной библиотеки Python fido2 Yubico .

Единственными зависимостями являются cbor.js и js-cookie.На данный момент все работает на стороне сервера, однако я продолжаю получать эту ошибку JavaScript при вызове метода navigator.credentials.create

TypeError: Failed to execute 'create' on 
'CredentialsContainer': The provided value is not of 
type '(ArrayBuffer or ArrayBufferView)'

Код:

var csrftoken = Cookies.get('csrftoken');
fetch('/register/begin', {
    method: 'POST',
    headers: {
        'X-CSRFToken': csrftoken
    }
}).then(function(response) {
    if(response.ok) {
        return response.arrayBuffer();
    }
    throw new Error('Error getting registration data!');

}).then(CBOR.decode).then(function(options) {
    console.log(options)
    //This line is not working
    return navigator.credentials.create(options);
//More code... complete registration...

Я не могу понятьэто изВы знаете, что не так?Спасибо!

1 Ответ

0 голосов
/ 25 января 2019

У меня была та же проблема, и причина была в том, что некоторые фрагменты данных, отправленные с сервера в ответе из / register / begin, должны быть отформатированы как строки байтов, а не как строки Юникода.В частности, я обнаружил, что user_id и идентификационные данные должны быть байтовыми строками - при условии, что вы также следуете примеру Yubico на сервере, реализованном в python 3.

Также следует отметить, что в этомcase Я нашел сообщения об ошибках Firefox гораздо более полезными, чем chome.

...