OAuth2 Básico do Discourse

Consegui fazer isso funcionar com o Authentik OAuth2, no entanto, houve alguns soluços com a configuração oauth2 user json url. Usei o endpoint user_info do Authentik para isso (/application/o/userinfo/), mas não sabia como mapear os campos. Para quem estiver procurando como configurar o Discourse com o OAuth2 do Authentik, aqui está o resumo:

  • Caminho do ID do usuário: preferred_username
  • Caminho do nome de usuário: preferred_username
  • Caminho do nome: name
  • Caminho do e-mail: email
  • Caminho do e-mail verificado: email_verified
  • Avatar: vazio.

Tive os seguintes problemas:

  1. No início, esqueci a barra final na URL JSON https://DOMAIN/application/o/userinfo/. Isso levou a solicitação de informações do usuário (link permanente para a origem) a retornar um código HTTP 301, o que causou falha no login. Não sei se a barra final deveria estar lá por especificação, mas talvez fosse bom lidar corretamente com o 301.
  2. Depurar isso acabou sendo complicado. As configurações de oauth2 debug auth foram uma salvação, mas… O Logster trunca o log de depuração antes de realmente despejar os dados de resposta significativos. Tive que modificar manualmente no contêiner a linha de log para
    log("user_json_response: #{user_json_response.status} #{user_json_response.headers} #{user_json_response.body}")
    
    Talvez essa linha de log pudesse ser atualizada? Acho que poderia ajudar outras pessoas a descobrir o caminho dos atributos JSON.
4 curtidas