WebAuthn create() игнорирует пустые исключенияCredentials и принудительно использует пользовательский интерфейс «ИспользJavascript

Форум по Javascript
Ответить
Anonymous
 WebAuthn create() игнорирует пустые исключенияCredentials и принудительно использует пользовательский интерфейс «Использ

Сообщение Anonymous »

Я реализую поток «перерегистрации» WebAuthn, в котором я намереваюсь заменить существующие учетные данные.
Рабочий процесс:
Пользователь запускает регистрацию.
Серверная сторона: все существующие учетные данные для этого пользователя помечаются как удаленные в БД.
Сервер возвращает пустой массив [] для исключенияCredentials.
Клиентская сторона: navigator.credentials.create() вызывается с пустым значением список ignoreCredentials.
Проблема:
Несмотря на то, что ignoreCredentials представляет собой пустой массив, браузер (Chrome на Android/Windows) обнаруживает, что ключ доступа с таким же user.id уже существует на устройстве/в облачном хранилище. Вместо того, чтобы приступить к созданию новых учетных данных, он предлагает пользователю: «Хотите ли вы использовать сохраненный ключ доступа?» Это парадокс: пустое исключениеCredentials должно означать «не блокировать создание», но браузер интерпретирует его как приглашение предложить существующие ключи, что разрушает UX «Новой регистрации».

Код: Выделить всё

const publicKeyCredentialCreationOptions = {
publicKey: {
rp: { id: "lenoire.co.kr", name: "LENOIRE" },
user: {
id: Uint8Array.from("USER_ID_FROM_DB", c => c.charCodeAt(0)),
name: "user@lenoire.co.kr",
displayName: "TeamLeader"
},
challenge: Uint8Array.from(atob(serverChallenge), c => c.charCodeAt(0)),
pubKeyCredParams: [{ type: "public-key", alg: -7 }],
excludeCredentials: [], // Explicitly empty to allow re-registration
authenticatorSelection: {
authenticatorAttachment: "platform",
userVerification: "required",
residentKey: "discouraged"
}
}
};

// Verified: excludeCredentials is truly [] before this call
await navigator.credentials.create({ publicKey: publicKeyCredentialCreationOptions });
[Вопрос]
Почему браузер/операционная система предлагает существующие учетные данные, даже если параметр ignoreCredentials пуст, а ключи были вручную удалены из диспетчера паролей? Существует ли скрытый кеш или особое поведение residentKey, которое вызывает этот пользовательский интерфейс?
[Вопрос]
Почему браузер/операционная система предлагает существующие учетные данные, даже если исключаемые учетные данные пусты, а ключи были удалены вручную из диспетчера паролей? Существует ли скрытый кеш или особое поведение residentKey, которое вызывает этот пользовательский интерфейс?

Подробнее здесь: https://stackoverflow.com/questions/798 ... ed-passkey
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»