Olá a todos,
Preciso de uma orientação sobre como fazer o login de usuários em um site remoto usando o usuário e senha existentes do Discourse.
Acho que não preciso de SSO… e é o porquê.
Primeiro, um pouco de contexto sobre meu caso de uso atual e por que não gosto dele.
Atualmente, tenho um site em https://www.example.com que possui um botão de login.
Quando um usuário clica no botão de login, ele é solicitado a inserir seu nome de usuário e endereço de e-mail existentes do Discourse (nota: usuário + e-mail, NÃO uma senha).
Em seguida, pego essas duas informações e faço uma requisição de API GET para:
"https://mydiscourse.comm/admin/users/list/all.json?email=" + strEmail
Nos cabeçalhos dessa chamada de API, incluo o nome da conta do usuário “system” e a chave de API associada ao usuário do sistema.
Se for encontrada uma correspondência de endereço de e-mail, comparo o Nome de Usuário fornecido por mim no formulário com o Nome de Usuário retornado na resposta da API para aquele e-mail específico.
Se corresponder, considero que esse usuário está logado no meu site em https://www.example.com.
Construí isso há três ou quatro anos e ainda funciona bem até hoje.
Mas…
-
É muito confuso para o usuário inserir uma combinação de Nome de Usuário + Endereço de E-mail em um formulário de login
– A maioria das pessoas sempre insere usuário + senha
– Apesar de instruções massivas em todo o meu formulário, as pessoas ainda naturalmente cometem erros -
Não é seguro
– Basta saber o nome de usuário + o endereço de e-mail e, armado com essas duas informações (triviais), você pode fazer login em https://www.example.com “como eles” com muito pouco esforço
O que gostaria de fazer é ter o usuário clicando no botão de Login em https://www.example.com e inserindo seu Usuário + Senha existentes do Discourse (em vez de usuário + e-mail!).
Meu site em example.com então faria uma rápida requisição de API para o meu Discourse, confirmaria se a combinação de usuário/senha fornecida está correta e retornaria o ID do usuário existente do Discourse.
Espero que isso faça sentido ![]()
Pesquisei toda a documentação da API e, por mais que tente, não consigo encontrar um simples endpoint de “login”? ![]()
Não preciso nem quero fazer o login ou logout das pessoas no meu próprio Discourse; simplesmente preciso confirmar se o usuário/senha deles está correto.
Qualquer orientação, dica, link ou conselho é muito bem-vindo ![]()