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.
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
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.
É 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.
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.