Uma pequena ressalva, porém: no Safari/Mac, a Autenticação Web é um recurso exclusivo para desenvolvedores, desativado por padrão. Quando ativado, funciona bem. Mas provavelmente deveríamos exibir uma mensagem ou um aviso quando a Autenticação Web não estiver habilitada. Atualmente, no Safari padrão, nada na interface indica que o processo de registro não funcionará (o console apresenta um erro):
O commit mais recente parece estar funcionando. Consegui usar a autenticação de dois fatores (com impressão digital!) no meu celular Android agora mesmo.
Certo, mas neste caso, trata-se de uma parte normal do trabalho no Discourse, então nós cobriríamos o custo. Desculpe se não ficou claro, mas espero que agora esteja.
Parabéns pelo suporte ao WebAuthn! É interessante ver que vocês criaram sua própria solução em vez de usar a gem webauthn. Se houver algum feedback para nós, adoraria ouvir
Uma sugestão para o mockup do “Fluxo de Login”: o WebAuthn possui um logotipo oficial que poderia ser usado no lugar de uma imagem genérica de impressão digital. Além da impressão digital, reconhecimento facial, padrão de deslize ou PIN também são opções comuns de verificação do usuário.
Obrigado pelo feedback, Rafe. Precisaremos adicionar o algoritmo adicional aqui então. E obrigado também pelo link para o logotipo oficial! Minha ideia ao definir apenas um algoritmo foi adicionar o número mínimo de algoritmos suportados para fazer tudo funcionar na V1, pois não estava certo das nuances entre todos os algoritmos, e o ES256 era usado em todos os exemplos que consegui encontrar.
Quanto ao motivo de, na época, eu ter optado por não usar a gem, pensei muito sobre isso e sabia que essa decisão seria questionada em algum momento. Certamente li bastante código da gem para entender melhor a implementação. As principais razões foram:
Não querer adicionar uma dependência extra ao Discourse. Cada dependência de gem adiciona sobrecarga adicional, não importa quão excelente seja o código dessa gem.
Querer ter uma boa compreensão de como essa peça crítica de segurança do Discourse funciona. Acreditei que ter o código no núcleo do Discourse tornaria as coisas mais claras e mais fáceis de expandir, sem ter uma “caixa preta”, por assim dizer. (Isso não é uma crítica à gem em si ou à sua complexidade; sei que as pessoas podem simplesmente olhar o código lá, e achei bastante fácil acompanhar o que estava acontecendo).
Não querer adicionar mais código do que o mínimo necessário para fazer o WebAuthn funcionar. Por exemplo, deixei de fora a atestação na nossa implementação inicial. Não achei que valesse a pena adicionar uma ferramenta completa quando tudo o que precisávamos era de uma chave de fenda.
Dito isso, isso pode ter sido um equívoco da minha parte. Se chegarmos à V2, V3, etc., do suporte ao WebAuthn com atestações, mais algoritmos suportados e assim por diante, pode se tornar muito trabalhoso para nós nos tornarmos “especialistas em WebAuthn”, por assim dizer. Nesse ponto, acho que poderíamos reavaliar o uso da gem.
É uma pena que os iPhones precisem de um dispositivo de terceiros para isso, no entanto. Espero que o iOS++ tenha isso integrado com autenticação do dispositivo e chip de segurança, como no Windows, Mac OS e Android.
Estou tão animado por fazer login no Discourse só de olhar para ele!!
Na verdade, estou meio surpreso de que o suporte a autenticador integrado ainda não esteja disponível… mas são notícias animadoras de qualquer forma — continuarei com a respiração suspensa.
Observou uma possível inconsistência na interface ao indicar a ativação da autenticação de dois fatores (2FA) para alguns usuários em uma instância hospedada do Discourse:
A listagem de todos os usuários ‘Staff’ não mostra minha conta como tendo o 2FA ativado:
A página de resumo da conta sugere que o 2FA está ativado, dado o texto do botão ‘Gerenciar Autenticação de Dois Fatores’.
A seção de Autenticação de Dois Fatores mostra que uma Chave de Segurança está ativada e que o Segundo Fator pode ser desativado.
Outros usuários na mesma instância que optam por usar um Autenticador Baseado em Token (sem Chave de Segurança) exibem o ícone de cadeado na listagem de ‘todos os usuários’.
Por favor, me avise se isso é um bug na interface ou se simplesmente adicionar uma Chave de Segurança não é suficiente para o 2FA nesta plataforma.
Vou dar uma olhada nisso, mas minha melhor suposição é que seja apenas um bug de interface na lista de usuários, caso a seção real de 2FA da interface esteja exibindo tudo corretamente. Obrigado pelo relato!
A Apple se juntou à FIDO Alliance (também conhecida como Fast Identity Online), uma organização que já inclui gigantes como Google, Intel, Microsoft e Samsung.