Suporte a login sem senha com Passkeys

:wave: Thomas Cannon aqui, um dos principais mantenedores da organização Ruby passkeys!

Existem algumas bibliotecas que foram criadas para ajudar com isso, mas precisamos desesperadamente de mantenedores. Alguns links relevantes abaixo:

Definitivamente queremos ajudar o máximo que pudermos; e unir recursos para tornar as passkeys o padrão em todo o ecossistema Ruby :flexed_biceps:

8 curtidas

Olá Thomas,

O Discourse vem com seu próprio sistema de autenticação integrado diretamente ao webauthn para 2FA. Acho que a única grande lacuna que temos agora é que não permitimos que o 2FA seja o único fator (opcionalmente).

Notei que o Google também aderiu totalmente agora (a partir de ontem), Passkeys: What they are and how to use them

Espero poder tornar isso uma opção para o Discourse também, eu realmente odeio senhas e 2FA + desafio apenas para mim parece inerentemente melhor do que senha, com certeza.

7 curtidas

Incrível! Qual a melhor forma que eu poderia ajudar?

2 curtidas

Complicado, depende de quão fundo no buraco do coelho você quer ir. Uma solicitação de pull de protótipo que adiciona uma configuração de site seria excelente, mas entendo totalmente que isso pode ser um grande compromisso de tempo.

2 curtidas

Eu posso tentar! Sem promessas, então se alguém quiser me vencer no almoço, vá em frente!

5 curtidas

Uma atualização rápida: o suporte para passkeys no Discourse estará disponível em breve. Tenho trabalhado nisso nas últimas semanas e temos alguns rascunhos de PRs prontos. Veja #23586, #23587 e #23591.

Acho que em cerca de 3-4 semanas, poderemos mesclar isso (atrás de uma configuração de site padrão desativada). E se concedermos mais algumas semanas para testes e correção de bugs, suspeito que poderemos ter isso pronto para produção em cerca de dois meses. Fique ligado!

10 curtidas

Olá! Há algo novo a ser dito sobre passkeys no Discourse?

2 curtidas

Parece que o PR final para isso foi mesclado há uma semana, e o nome da configuração do site parece ser atualmente experimental_passkeys (atualmente uma configuração oculta).

1 curtida

Acabei de ativar a configuração do site e adicionei uma chave de acesso à minha conta em um fórum que ajudo a gerenciar, e isso parece funcionar perfeitamente. Para ativá-lo antecipadamente em um site, isso deve funcionar:

cd /var/discourse
./launcher enter app
rails c
SiteSetting.experimental_passkeys=true

Uma vez ativado, parece que você só precisa acessar https://forum.example.com/my/preferences/security e adicionar uma chave de acesso, depois sair e usar a opção Login with a passkey para fazer login novamente.

3 curtidas

Olá pessoal, sim, mesclamos alguns PRs adicionando suporte a passkeys e já estamos testando internamente.

As etapas acima estão corretas, se você quiser ser um testador muito, muito inicial do recurso. Ainda estamos ajustando algumas coisas e uma atualização/anúncio oficial está chegando em breve.

9 curtidas

Mais uma atualização aqui antes de fazer um anúncio oficial: as senhas estão habilitadas aqui no meta. Por favor, experimente e relate quaisquer problemas como respostas neste tópico.

Nosso plano é continuar testando o recurso por mais uma semana ou mais sob o sinalizador experimental. Em seguida, anunciaremos oficialmente e removeremos a configuração experimental do site (ou seja, o suporte a senhas será habilitado por padrão em todas as instâncias que usam logins locais).

7 curtidas

Testei no Desktop (Windows 11, Chrome) e funcionou perfeitamente! :+1:

Tive que clicar em Enviar E-mail de Redefinição de Senha para confirmar minha identidade porque geralmente faço login com o Google, então não sei minha senha. :sweat_smile:


Testei no Android (10) e no Chrome/App. Funciona bem, porém:

  • Tocar no campo de entrada aciona o modal da chave de acesso (passkey).
    • Ignorar e tocar no campo de entrada novamente me permite digitar.
  • Tocar no botão não faz nada (além de selecioná-lo e fechar o teclado).


(yay, está lento, não tenho certeza por quê)

5 curtidas

Obrigado pelo relatório @Arkshine, eu tinha esquecido de incluir uma pequena alteração no componente móvel em um commit dois dias atrás. Um erro constrangedor, o botão não fazia nada em todos os dispositivos móveis.

De qualquer forma, está corrigido agora, acabei de testar no meu Android, e deve funcionar para você também.

2 curtidas

Sim, está funcionando agora, obrigado! :smile:

2 curtidas

Parece que um sistema ChromeOS não pode ser usado como chave de acesso com o Discourse (embora possa ser usado como uma em outros sites), isso é intencional?

Não estamos bloqueando especificamente, não. O que é exatamente um “sistema chromeos”, é o Chrome no ChromeOS? Você pode compartilhar o navegador e a versão do sistema operacional?

Sim.

Claro.
De chrome://version:

Chave Valor
Google Chrome 118.0.5993.86 (Build oficial) (64 bits)
Revisão d9a55e23605b9c433d369a305c71114843ec754d-refs/branch-heads/5993@{#1287}
Plataforma 15604.45.0 (Build oficial) canal estável octopus
User Agent Mozilla/5.0 (X11; CrOS x86_64 14541.0.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36

Essa informação é suficiente?

Veja o que acontece quando tento adicionar uma chave de acesso usando este computador (escolho a opção “Este Dispositivo” no primeiro menu):


1 curtida

Ah, interessante, obrigado pela captura de tela. Suspeito que o dispositivo não suporte verificação de usuário? Você pode usar touch/faceId ou um PIN para desbloquear o dispositivo?

De acordo com esta página, parece que o suporte do Chrome OS é irregular.

1 curtida

Eu acho que suporta.

Eu uso uma senha. Pode ser útil notar que posso adicionar este dispositivo como um método de 2FA a uma conta usando webauthn, apenas não consigo adicioná-lo como uma passkey.

1 curtida