Чтобы navigator.credentials.get использовал встроенный Windows Hello, у тебя должен быть:
credential, зарегистрированный через Windows Hello, то есть:
authenticatorAttachment: "platform" при создании (navigator.credentials.create)
user verification включён (например, PIN)
Иначе Windows будет звать последний известный способ — в твоем случае внешний ключ.
Что тебе нужно сделать
Заново зарегистрировать credential через navigator.credentials.create(), указав authenticatorAttachment: "platform":
const publicKey = {
challenge: new Uint8Array(32),
rp: { name: "Example Corp" },
user: {
id: new Uint8Array(16),
name: "user@example.com",
displayName: "User"
},
pubKeyCredParams: [{ alg: -7, type: "public-key" }],
authenticatorSelection: {
authenticatorAttachment: "platform",
userVerification: "required",
residentKey: "required"
},
timeout: 60000,
attestation: "none"
};
const cred = await navigator.credentials.create({ publicKey });
console.log(cred);
Сохрани credentialId из полученного cred.rawId (в base64url).
При логине (через navigator.credentials.get) передавай этот ID.