RFC WebAuthn
Este tópico tem como objetivo documentar as metas do projeto Discourse em torno da autenticação FIDO2 / WebAuthn.
Por quê?
Adicionar suporte ao WebAuthn no Discourse aumentará a segurança das contas de usuário, permitindo contas sem senha facilmente acessíveis usando os recursos seguros de seus dispositivos, como um leitor de impressão digital de smartphone.
Métodos de Autenticação
- WebAuthn como autenticador de segundo fator (atuando como uma alternativa ao Google Authenticator)
- WebAuthn como autenticador de primeiro fator (atuando como uma alternativa ao login social)
- WebAuthn como autenticador de múltiplos fatores (login sem nome de usuário)
WebAuthn como autenticador de segundo fator
Isso permitirá que um usuário do Discourse, que já possui uma conta ativa, use o WebAuthn como 2FA, onde hoje só suportamos TOTP.
Qualquer método WebAuthn pode funcionar aqui, seja biometria do dispositivo (sensor de impressão digital no Android, Windows Hello em laptops), um chip seguro do dispositivo (TPM, enclave seguro) ou uma chave de hardware (como um Yubikey).
Isso estaria disponível para todos os usuários que navegam com:
- Microsoft Edge no Windows, usando Windows Hello (com reconhecimento facial, leitor de impressão digital ou PIN)
- Chrome no macOS, usando Touch ID
- Telefone Android
- Laptop/Desktop/Telefone + Chave Física (Yubikey, Google Titan)
WebAuthn como autenticador de primeiro fator (contas sem senha)
Permite que um usuário faça login em sua conta do Discourse usando a autenticação WebAuthn como alternativa a uma senha. Se um autenticador de primeiro fator for configurado, o usuário será solicitado a usar o autenticador em vez de uma senha.
Os mesmos métodos de autenticação para autenticação de segundo fator funcionarão para autenticação de primeiro fator: biometria, chip seguro ou chave de hardware.
Fluxo de Registro
Sem campo de senha
Fluxo de Login
WebAuthn como autenticador de múltiplos fatores (logins sem nome de usuário)
Exporá um método de login alternativo que solicita apenas entrada WebAuthn. A chave de segurança registrada passará adicionalmente informações de ID de usuário para o servidor do Discourse.
Este método de autenticação atualmente requer uma chave de autenticação moderna (por exemplo, um Yubikey 5) mais o Google Chrome 76+, pois depende de um recurso chamado “Chaves Residentes”. Como isso armazena dados no autenticador, podem haver limitações; por exemplo, o Yubikey 5C pode armazenar no máximo 25 deles.
Fluxo de Registro
Esses fluxos são uma evolução do fluxo para logins sem senha, não um fluxo de login separado. Isso permite uma implementação iterativa.
Sem campo de senha, adiciona uma caixa de seleção extra para uso de chaves residentes
Fluxo de Login
Se o nome de usuário for deixado em branco, tentaremos buscar um
user_id no autenticador
Referências
Demonstrações
https://webauthndemo.appspot.com/
Recursos
https://medium.com/@herrjemand/introduction-to-webauthn-api-5fd1fb46c285


























