Trocando a autenticação por uma alternativa sem senha

Este post é sobre um recurso que definitivamente não existe, mas que eu gostaria de implementar. Neste momento, não tenho ideia de quanto trabalho isso pode exigir, e o objetivo desta pergunta é tentar entender o que é necessário.

Algum contexto: estamos trabalhando em uma solução de autenticação sem senha. https://trykno.com/ A solução funciona como um serviço, o que significa que os proprietários de sites que utilizam o serviço não precisam lidar com o envio seguro de e-mails ou com o armazenamento de segredos e informações de identificação pessoal.

Seria ótimo termos um fórum para o projeto, e gostaríamos de usar o Discourse.
No entanto, precisamos substituir a autenticação para que ela utilize o Kno.

Perguntas:

  • O sistema de autenticação no Discourse é plugável?
  • Existem suposições rígidas de que o usuário tenha um e-mail?
  • Qual é o framework de front-end? (Vejo ember-rails no Gemfile, mas nenhuma referência ao Ember no package.json)

Peço desculpas se essas perguntas são simplistas; não sou desenvolvedor Ruby, e qualquer orientação sobre o problema seria valiosa. Obrigado.

Assumindo que você quis dizer “Discourse” :stuck_out_tongue: Sim, ele é plugável. Você pode desenvolver um plugin de autenticação ou usar o sistema nativo de SSO.

Sim, todo usuário deve ter um e-mail no Discourse. Você pode fornecer e-mails inválidos (terminando em .invalid), mas não recomendamos isso.

Ember. Mas, para um plugin de autenticação, é improvável que você precise mexer no front-end.

6 curtidas

Ah, constrangedor, vou atualizar.

É uma funcionalidade que, ao usar o Kno, você não precisa conhecer o e-mail do usuário, embora ele possa ser solicitado.

2 curtidas

Atualmente, é possível não usar uma senha e apenas receber um link enviado para você.

Se o seu objetivo é desenvolver o kno, provavelmente você deseja desenvolvê-lo como um servidor OAuth. Assim, as pessoas poderão usá-lo como uma das várias fontes de autenticação, onde o SSO é a única opção. Veja Discourse OAuth2 Basic

2 curtidas

Vejo a possibilidade de receber um link enviado, mas o Kno oferece mais recursos, como autenticação de dispositivo via WebAuthn, uma vez que você confirmou seu e-mail de uso único.

Desenvolver como um servidor OAuth, infelizmente, não atende aos requisitos de que precisamos. (Deveria provavelmente escrever algo em nossa FAQ explicando o porquê, mas a questão central é que o Kno permite que você se autentique em um dispositivo usando outro dispositivo).

Analisando as coisas com mais cuidado, parece que consigo montar uma primeira versão viável implementando uma solução de SSO específica para o Discourse.

1 curtida

É possível usar um único provedor OAuth e desabilitar todos os outros tipos de autenticação?

Nesse caso, também seria bom que clicar em “Entrar” iniciasse automaticamente o fluxo de autenticação, ou seja, sem abrir o modal de login e pedir ao usuário para selecionar o provedor.

Você talvez consiga corrigir isso.

Mas por que se preocupar, já que, uma vez que alguém faz login, raramente vê essa caixa de diálogo?

É melhor dedicar seu tempo de forma mais produtiva a outros problemas.

Você já tentou? Porque é assim que o Discourse funciona por padrão há anos :wink:

3 curtidas

Bem, isso é excelente.
Não, eu ainda não tentei, porque ainda não implementei o provedor OAuth para o meu serviço. E acho que, depois disso, precisarei criar um plugin, pois será um novo provedor OAuth.

Quase terminei minha integração com SSO, então acho que é o momento perfeito para migrar para o uso do OAuth. :smiley:

1 curtida