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:
- 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. - Depurar isso acabou sendo complicado. As configurações de
oauth2 debug authforam 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
Talvez essa linha de log pudesse ser atualizada? Acho que poderia ajudar outras pessoas a descobrir o caminho dos atributos JSON.log("user_json_response: #{user_json_response.status} #{user_json_response.headers} #{user_json_response.body}")