Plugin OIDC subitamente quebrado, falha silenciosamente para novos usuários

Temos uma instância do Discourse em execução que parou de registrar usuários que ainda não possuem uma conta e estamos perplexos com o motivo! Isso começou há algumas semanas, depois que instalamos o plugin Discourse AI e reiniciamos a instância. Isso só chegou até mim depois de reclamações de clientes nos últimos dias. Geralmente temos muitas inscrições todos os dias.

A Configuração

  • Discourse auto-hospedado via Docker oficial
  • https://community.enginedj.com
  • Plugin OIDC usando nosso próprio Provedor OIDC (:camera_flash: 1)
  • Nenhuma outra autenticação além do OIDC (ou seja, sem registro de e-mail + senha) (:camera_flash: 2)
  • Última nova inscrição bem-sucedida foi em 22 de novembro de 2023, 5h23 NZDT
  • O plugin AI foi instalado por volta de 22 de novembro de 2023, 6h03 NZDT (isso teria causado a reinicialização da instância do Discourse)
  • Nenhum log de eventos para alterações de configuração do sistema desde outubro e nada relevante para autenticação desde março (:camera_flash: 3)
  • Muita atividade no fórum, nenhum problema com espaço em disco / banco de dados etc.

O Problema

  • O fluxo de login funciona corretamente, mas após o retorno, os usuários sem conta preexistente não são logados.
  • Nenhuma mensagem de erro é exibida.
  • Nenhuma mensagem de erro nos logs (temos alguns erros de CSRF nos logs, mas eles não estão correlacionados com os logins falhados).
  • O log detalhado para o plugin OIDC mostra que ele consulta corretamente os dados do provedor OIDC, obtém claims etc. e não mostra problemas (:camera_flash: 4).

O que tentamos

  • Desativamos o plugin Discourse AI
  • Removemos o plugin Discourse AI
  • Verificamos as respostas de cookies em busca de domínios incompatíveis
  • Atualizamos todos os plugins / componentes para a versão mais recente (:camera_flash: 5)
  • Confirmamos que nenhuma configuração foi ajustada
  • Investigamos os logs no host. Nada se destaca.

Aqui está um vídeo do problema. O primeiro login é para um usuário sem conta Discourse existente. O segundo é com meu usuário administrador.

https://www.loom.com/share/3aad210d844849dc8154ce6e5db50d29

Alguma ideia sobre o que devemos procurar a seguir?

:camera_flash: 1

:camera_flash: 2

:camera_flash: 3

:camera_flash: 4

:camera_flash: 5

1 curtida

Olá @snikch :wave:

Quando passo pelo processo de login no seu site, vejo este erro no console do JavaScript. Ele está vindo do tema id=12, que parece estar tentando (e falhando) adicionar algum tipo de estilo extra para o botão de login?

Se eu usar as ferramentas de desenvolvedor do meu navegador para ‘bloquear’ o JS para aquele tema específico, então tudo parece funcionar como esperado.

Portanto, acho que para fazer as coisas funcionarem novamente, você pode desativar o tema id=12 ou editá-lo para corrigir/remover o código problemático.

Dito isso, realmente não queremos que esse tipo de erro de tema quebre totalmente o login para os sites! Então, verei se podemos melhorar nosso tratamento de erros aqui :eyes: (editar: PR para melhorar isso aqui)

5 curtidas

Uau, obrigado @david. Eu tinha visto esse erro e criei um cartão para que fosse resolvido, mas apenas presumi que isso não teria nada a ver com o login do usuário, pois presumi que tudo isso era do lado do servidor e acontecia antes que o JS renderizasse a página! Muitas suposições aí :facepalm: Agora vejo que ele precisa para mostrar o modal Criar Conta.

Muito obrigado pela ajuda :heart_eyes_cat:

1 curtida

Este tópico foi fechado automaticamente após 21 horas. Novas respostas não são mais permitidas.