Encontrei o problema: o cabeçalho não estava definido como “Content-Type: application/json”. E posso ver que foi o mesmo para @qlands acima.
O único problema restante para mim agora é o mesmo que o do @nodomain: a conta é criada com sucesso, mas o avatar não é incluído. Resposta de exemplo:
Body: {
"access_token":"...",
"token_type":"bearer",
"expires_in":"3600",
"scope":"profile",
"profile" : {
"id":1234,
"email": "...",
"name": "...",
"picture": "https://somedomain.com/somevalidpicture.jpg"
}
}
E é analisado corretamente, pois aparece no seguinte log:
OAuth2 Debugging: after_authenticate response:
creds: {"token"=>"...", "expires_at"=>1702053692, "expires"=>true}
uid: 1234
info: {"email"=>"...", "name"=>"...", "avatar"=>"https://somedomain.com/somevalidpicture.jpg"}
extra: {}
Verifiquei que o endereço da imagem está correto e seu tamanho é 300x300.
Alguma ideia sobre isso?
Editar: alguém acabou de criar uma conta e pegou a imagem do Gravatar. Talvez a imagem válida no JSON seja substituída por um resultado em branco do Gravatar?
Authentik como provedor OAuth
Estou atualmente experimentando o Authentik e gostaria de perguntar se mais alguém tem alguma experiência com ele e o Discourse?
Infelizmente, não encontrei um documento de suporte oficial para o Discourse.
Há muitas configurações para mexer ![]()
O Portainer tem uma implementação de OAuth muito mais simples.
O Portainer, apenas para comparação:
Como vai? Quero implementar SSO com Authentik no Discourse e Ghost, mas meu projeto está em espera no momento.
Qualquer conselho será muito apreciado ![]()
Alguém já encontrou o problema em que o SSO está localizado em uma rede interna e, quando o Discourse tenta acessar o site SSO usando um endereço IP interno, ele se torna inacessível?
tail -f production.log
(oauth2_basic) Setup endpoint detected, running now.
(oauth2_basic) Request phase initiated.
Started POST "/presence/update" for 10.10.10.10 at 2024-06-15 18:19:44 +0000
Processing by PresenceController#update as */*
Parameters: {"client_id"=>"xxx", "present_channels"=>["/chat-user/core/1"]}
Completed 200 OK in 26ms (Views: 0.2ms | ActiveRecord: 0.0ms | Allocations: 1895)
Started GET "/auth/oauth2_basic/callback?code=xxxx&state=xxxx" for 10.10.10.10 at 2024-06-15 18:19:49 +0000
(oauth2_basic) Setup endpoint detected, running now.
(oauth2_basic) Callback phase initiated.
OAuth2::ConnectionError (FinalDestination: all resolved IPs were disallowed)
lib/final_destination/ssrf_detector.rb:105:in `lookup_and_filter_ips'
lib/final_destination/http.rb:15:in `connect'
lib/middleware/omniauth_bypass_middleware.rb:43:in `call'
lib/middleware/csp_script_nonce_injector.rb:12:in `call'
lib/middleware/anonymous_cache.rb:391:in `call'
lib/middleware/csp_script_nonce_injector.rb:12:in `call'
config/initializers/008-rack-cors.rb:14:in `call'
config/initializers/100-quiet_logger.rb:20:in `call'
config/initializers/100-silence_logger.rb:29:in `call'
lib/middleware/enforce_hostname.rb:24:in `call'
lib/middleware/request_tracker.rb:289:in `call'
Erro na página da web
Oops
O software que alimenta este fórum de discussão encontrou um problema inesperado. Pedimos desculpas pelo inconveniente.
Informações detalhadas sobre o erro foram registradas e uma notificação automática foi gerada. Vamos dar uma olhada.
Nenhuma ação adicional é necessária. No entanto, se a condição de erro persistir, você pode fornecer detalhes adicionais, incluindo etapas para reproduzir o erro, postando um tópico de discussão na categoria de feedback do site.
Verifiquei os logs do meu firewall, mas não encontrei nenhum registro de bloqueio! Além disso, tanto o Discourse quanto o SSO estão localizados na rede interna, então não deveria haver problemas de bloqueio de firewall ou interceptação de solicitação!
Mas quando aponto o endereço IP do site SSO para a rede pública externa, ele volta a funcionar normalmente!
Isso é um bug no plugin ou um problema de configuração do meu lado?
Você pode adicionar o nome do host do seu site SSO interno à configuração do site ‘allowed_internal_hosts’. Assim, o Discourse poderá se conectar a ele.
Como alterar o client_id para appid na URL?
Meu servidor não suporta client_id na URL, exceto appid.
Tenho que modificar o plugin.
Por favor, me ajude.
Um ano depois e você ainda está ajudando com este post! Obrigado!! Authentik agora funciona para mim.
Olá, estou usando Oauth2 com Zalo, mas tivemos o problema como anexado. Alguém sabe o motivo?
Configurei a URL de retorno de chamada como: https://sphere.daviteq.com/auth/basic_oauth2/callback
Alguém pode compartilhar uma configuração do authentik? Tenho quase certeza de que configurei tudo corretamente, mas ainda estou recebendo (oauth2_basic) Authentication failure! Timeout::Error: Faraday::TimeoutError, Timeout::Error
Este plugin agora está incluído no core do Discourse como parte de Bundling more popular plugins with Discourse core. Se você auto-hospeda e usa o plugin, precisa removê-lo do seu app.yml antes da próxima atualização.
x-ref


