Minha compreensão é que podemos deixar o Discourse usar nossa API para validar a autenticação e também enviar alguns parâmetros personalizados. Corrija-me se estiver errado.
O que queremos é usar nossa própria página de login (quando os usuários clicarem em login em discourse.open…com, nossa página de login “kan.open..com” deve ser aberta). E uma vez que o login for bem-sucedido, ele deve ir para o site do Discourse. Vimos alguns sites como Twitter ou Atlassian fazendo o mesmo. Você pode nos ajudar com mais detalhes sobre como isso pode ser alcançado.
Isso está correto se por “usar nossa API” você quer dizer “Modificaremos nossa API para suportar o Discourse Connect”. Os detalhes de como fazer isso estão nos documentos que você vinculou. Se você quiser que todos sejam redirecionados imediatamente em vez de ver algo em seu fórum, você precisará ativar a configuração do site “login obrigatório”.
Tenho uma pergunta sobre a configuração do Discourse SSO (DiscourseConnect). Existe uma maneira de incluir parâmetros adicionais na solicitação quando o Discourse acessa a URL do DiscourseConnect? Especificamente, quero passar dados do usuário na solicitação para a URL do DiscourseConnect, como um token de usuário ou ID de usuário, que posso usar para autenticar o usuário e concluir o processo de login SSO.
O desafio que estou enfrentando é que os usuários precisam fazer login duas vezes — uma vez no meu projeto e outra vez no Discourse — ao se conectar através do SSO. Idealmente, eu gostaria de otimizar o processo para que, se o usuário já estiver logado no meu projeto, ele não precise fazer login novamente com as mesmas credenciais no meu projeto.
Existe algum recurso no Discourse ou alguma prática recomendada para lidar com isso? Agradeceria qualquer orientação ou sugestão para tornar a experiência SSO mais integrada.
Uma abordagem para lidar com esse cenário é descrita na seção “Tornando o processo contínuo para usuários autenticados” deste tópico: Create a DiscourseConnect login link.
Na primeira vez que realizo um login SSO com o Discourse, gostaria de saber se há alguma API ou método disponível que possa me fornecer dados do usuário, como um ID de usuário ou token, que eu possa enviar para a API do Discourse. Em troca, o Discourse incluiria esses dados, como o ID de usuário ou token, na solicitação de URL do Discourse Connect.
Você pode usar o external_id que você definiu no payload do DiscourseConnect para fazer uma solicitação de API para o Discourse. Essa solicitação retornará o Objeto de usuário completo.
Você não está entendendo o que quero transmitir. Não estou perguntando sobre como recuperar detalhes do usuário do Discourse após o login. Por favor, entenda o fluxo completo do que estou tentando alcançar e me diga se é possível com o Discourse ou se devo prosseguir com minha própria abordagem.
Atualmente, tenho um projeto construído usando o framework Laravel e quero fornecer aos usuários acesso ao fórum Discourse para feedback. Decidi implementar o login SSO para o Discourse. Criei uma conta de administrador do Discourse e ativei as configurações necessárias para o login SSO, incluindo a ativação do SSO, a definição da URL de redirecionamento e a configuração do segredo.
Agora, adicionei um botão ‘Discourse Connect’ dentro do meu projeto. Quero que, quando os usuários clicarem neste botão, registrem-se ou façam login usando minhas credenciais e façam login automaticamente no Discourse. Quando os usuários clicam no botão ‘Discourse Connect’, eles são redirecionados para a URL da minha comunidade base com o endpoint de sessão/sso, que então redireciona de volta para minha URL do Discourse Connect. Recebo os parâmetros SSO e sig na solicitação, que entendo serem para validação. No entanto, preciso do user_id ou de algum identificador para recuperar os dados do usuário do meu banco de dados para validar, autenticar e fazer login do usuário no Discourse.
Minha pergunta é: existe uma API ou algum mecanismo no Discourse que possa retornar o user_id junto com os parâmetros SSO e sig na solicitação? Isso é importante porque, sem recuperar os dados do usuário na solicitação, eu teria que fazer o usuário fazer login novamente, o que proporcionaria uma experiência de usuário ruim. Essencialmente, quando um usuário faz login no meu projeto e clica no botão ‘Discourse Connect’, a URL do Discourse Connect é acionada e recebo os parâmetros SSO e sig. Para autenticar o usuário, preciso buscar os dados do usuário no banco de dados, mas isso exigiria que o usuário fizesse login novamente, o que quero evitar.
Quero uma experiência perfeita onde, se o usuário já fez login uma vez, ele não precise fazer login novamente. Eles devem poder acessar o fórum Discourse diretamente usando suas credenciais do projeto.