Algoritmo COSE desconhecido encontrado. alg: -257

Olá,

Um dos meus usuários não consegue fazer login com 2FA usando uma chave de hardware.

Depois de pressionar o botão na chave durante o login, o Windows 10 solicita um PIN.
Após inserir o PIN, ele recebe o erro “O algoritmo usado pela chave de segurança não é reconhecido.”. Verifiquei, e trata-se da chave de i18n webauthn.validation.unknown_cose_algorithm_error.

O servidor registra isso como um erro:

Algoritmo COSE desconhecido encontrado. alg: -257. user_id: <redacted>. params: <ActionController::Parameters {"signature"=>"<redacted>", "clientData"=>"<redacted>", "authenticatorData"=>"<redacted>", "credentialId"=>"<redacted>"} permitted: false>

Uma rápida pesquisa no Google só encontrou isso:
https://review.discourse.org/t/fix-catch-error-when-unknown-cose-algorithm-is-supplied-for-security-key-8649/8074

Então, provavelmente precisa ser implementado, mas, estranhamente, de alguma forma o usuário conseguiu configurá-lo na conta?
Não tenho certeza se consigo corrigir isso do lado do administrador do fórum sem alterar o código.

Estou usando a instalação Docker recomendada, standalone, com a versão 2.7.0.beta3. Recriei o fórum e atualizei-o há menos de 1 hora antes de criar este tópico.

Isso é estranho. Eles conseguem fazer login com 2FA e essa chave de hardware em outros sites? Alguma ideia, @dan?

Você pode compartilhar o modelo da chave de segurança e a versão do navegador?

Será interessante ver qual algoritmo está faltando em:

Estou apostando que é este: Support EdDSA · Issue #48 · cedarcode/cose-ruby · GitHub EdDSA.

Se tivermos o modelo e o sistema operacional do desenvolvedor.

Talvez seja isso aqui? https://blockchain2fa.io/

Acho que você pode usar blockchains para qualquer coisa.

Esta é uma limitação da biblioteca cose-ruby que utilizamos, conforme apontado pelo @sam. Ela suporta apenas os seguintes algoritmos:

De acordo com a mensagem de erro, a chave de segurança está usando o algoritmo “-257”, que corresponde ao RS256 e não é recomendado. Esse é provavelmente o motivo pelo qual a biblioteca não o implementa.

Qual dispositivo você está tentando usar para autenticação?