Gostaria de solicitar suporte para um fluxo local verdadeiramente sem senha no Discourse, sem depender de um provedor de identidade externo, como Microsoft, Google, etc.
No momento, pelo que pude perceber, o Discourse já possui partes disso, mas não a combinação de configuração necessária.
O que existe hoje
O Discourse já possui:
- contas locais
- links de login por e-mail / comportamento de login sem senha via
enable local logins via email - fluxos de convite onde a senha pode ser adiada
- provisionamento automático de autenticação externa via OIDC / OAuth / SAML / DiscourseConnect
Mas a peça que falta é que o login local baseado em e-mail ainda está vinculado aos logins locais em geral, o que significa que não posso dizer claramente:
- permitir login local com link mágico por e-mail
- permitir cadastro/onboarding local com link mágico por e-mail
- não permitir autenticação local por senha
Essa é a combinação que desejo.
O caso de uso
Quero que o Discourse suporte nativamente este modelo:
- O usuário chega ao site
- O usuário insere o e-mail
- O Discourse envia um link de login de uso único/curta duração por e-mail
- Se ele ainda não tiver uma conta, o Discourse cria uma
- O usuário faz login
- Logins futuros podem continuar da mesma forma
- Nenhuma senha local é necessária, a menos que o administrador queira explicitamente permitir uma
Em outras palavras:
conta local
verificação de propriedade do e-mail local
nenhuma senha local necessária
Por que isso importa
No momento, se alguém deseja uma experiência sem senha, a solução alternativa mais limpa parece ser usar um provedor de identidade externo. Mas isso não é ideal para todos os sites.
Algumas razões:
- nem toda comunidade quer depender de Microsoft / Google / Auth0 / etc
- algumas comunidades desejam um fluxo de autenticação local mais simples e que preserve mais a privacidade
- algumas comunidades querem reduzir o atrito das senhas sem terceirizar a identidade
- alguns administradores querem dar suporte a usuários que têm dificuldade com senhas, mas conseguem lidar bem com links de e-mail
Já existe precedente para login sem senha no Discourse por meio de links por e-mail, então isso parece mais um modo de produto ausente do que um conceito completamente novo.
O que estou pedindo
Acho que isso poderia ser resolvido desacoplando esses conceitos:
Comportamento atual
enable local loginsenable local logins via email
Comportamento solicitado
Permitir que os administradores controlem independentemente:
- permitir login local por senha
- permitir login local por link de e-mail
- permitir cadastro local por senha
- permitir cadastro/criação de conta local por link de e-mail
Modelo de configurações desejado (exemplo)
Algo como:
enable local password loginsenable local email loginsenable local password signupenable local email signup- talvez
local email signup creates account automatically - talvez
local email signup requires staff approval - talvez
local email login link expiry minutes
Não necessariamente esses nomes exatos de configuração, apenas o conceito.
UX desejada
Login
O usuário deve poder escolher:
- continuar com senha
- ou envie-me um link de login por e-mail
Se o login por senha estiver desabilitado, apenas a opção de link por e-mail será exibida.
Cadastro
O usuário deve poder escolher:
- criar conta com senha
- ou criar conta via link de e-mail
Se o cadastro por senha estiver desabilitado, o site deve simplesmente fazer o cadastro por link de e-mail.
Por que convites não são suficientes
Convites ajudam no onboarding, mas não são a mesma coisa que um modo real de autenticação local sem senha.
Pelo que entendi:
- convites são principalmente para aceitação/resgate
- eles não são a credencial de login contínua do usuário
- após o término da sessão, os usuários ainda precisam de um caminho normal de login
Portanto, convites estão relacionados, mas não resolvem totalmente o problema.
Por que autenticação externa não é suficiente
Sim, OIDC / OAuth / SAML podem proporcionar experiências sem senha ou baseadas em OTP, e auth skip create confirm ajuda muito nisso.
Mas isso significa que o site agora depende de um provedor de identidade de terceiros.
Para algumas comunidades, isso é aceitável. Para outras, é uma complexidade desnecessária e uma dependência indesejada.
Reflexões sobre segurança
Percebo que a autenticação por link de e-mail tem implicações de segurança, mas o Discourse já possui padrões relacionados, como:
- redefinição de senha por e-mail
- login por link de e-mail
- aceitação de convite por e-mail
Portanto, isso não estaria introduzindo a ideia de prova de controle baseada em e-mail do zero.
Medidas de proteção razoáveis poderiam incluir:
- links de curta duração
- limites de taxa agressivos
- tokens de uso único
- 2FA opcional após login por link mágico
- período de espera opcional antes de alterar e-mail/senha após autenticação por link mágico
- visibilidade/logs de administrador para logins por link mágico
Em resumo
Estou pedindo um modo local sem senha de primeira classe no Discourse, onde:
- os usuários se autenticam provando o controle de seu e-mail
- o Discourse pode criar contas locais a partir desse fluxo
- os administradores podem desabilitar totalmente a autenticação local por senha
- isso funciona sem precisar de Microsoft / Google / outro provedor de SSO
Acho que isso seria um recurso muito útil para comunidades que desejam onboarding de baixo atrito sem terceirizar a identidade.