Discourse OAuth2 de base

J’ai trouvé le problème : l’en-tête n’était pas défini sur « Content-Type: application/json ». Et je vois que c’était la même chose pour @qlands ci-dessus.

Le seul problème restant pour moi maintenant est le même que @nodomain : le compte est créé avec succès mais l’avatar n’est pas inclus. Exemple de réponse :

Body: {
  "access_token":"...",
  "token_type":"bearer",
  "expires_in":"3600",
  "scope":"profile",
  "profile" : {
    "id":1234,
    "email": "...",
    "name": "...",
    "picture": "https://somedomain.com/somevalidpicture.jpg"
  }
}

Et il est correctement analysé, puisqu’il apparaît dans le log suivant :

OAuth2 Debugging: after_authenticate response:

creds: {"token"=>"...", "expires_at"=>1702053692, "expires"=>true}
uid: 1234
info: {"email"=>"...", "name"=>"...", "avatar"=>"https://somedomain.com/somevalidpicture.jpg"}
extra: {}

J’ai vérifié que l’adresse de l’image est correcte et qu’elle fait 300x300.

Une idée pour ça ?

Edit : quelqu’un vient de créer un compte et il a pris l’image de Gravatar. Peut-être que l’image valide dans le json est écrasée par un résultat vide de Gravatar ?

Authentik en tant que fournisseur OAuth

Je joue actuellement avec Authentik et j’aimerais savoir si d’autres personnes ont de l’expérience avec lui et Discourse ?

Malheureusement, je n’ai pas trouvé de document de support officiel pour Discourse.

Il y a beaucoup de paramètres à ajuster :smiley:

Portainer a une implémentation OAuth beaucoup plus simple.

Portainer, juste pour comparaison :

1 « J'aime »

Comment ça va ? Je veux implémenter le SSO avec Authentik sur Discourse et Ghost, mais mon projet est en attente pour le moment.

Tout conseil serait grandement apprécié :slight_smile:

1 « J'aime »

Quelqu’un a-t-il rencontré le problème où l’authentification unique (SSO) se trouve sur un réseau interne, et lorsque Discourse tente d’accéder au site SSO en utilisant une adresse IP interne, il devient inaccessible ?

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'

Erreur de page Web

Oups
Le logiciel qui

Vous pouvez ajouter le nom d’hôte de votre site SSO interne au paramètre de site ‘allowed_internal_hosts’. Discourse pourra alors s’y connecter.

Comment changer le client_id en appid dans l’URL ?
Mon serveur ne prend pas en charge le client_id dans l’URL, sauf appid.
Je dois modifier le plugin.
S’il vous plaît, aidez-moi.

Un an plus tard et vous aidez toujours avec ce post ! Merci !! Authentik fonctionne maintenant pour moi.

3 « J'aime »

Bonjour, j’utilise Oauth2 avec Zalo, mais nous avons rencontré le problème ci-joint. Quelqu’un connaît-il la raison ?

J’ai configuré l’URL de rappel comme suit : https://sphere.daviteq.com/auth/basic_oauth2/callback

Quelqu’un peut-il partager une configuration authentik ? Je suis presque sûr d’avoir tout configuré correctement, mais j’obtiens toujours (oauth2_basic) Authentication failure! Timeout::Error: Faraday::TimeoutError, Timeout::Error

1 « J'aime »

:partying_face: Ce plugin est maintenant inclus dans le cœur de Discourse dans le cadre de Bundling more popular plugins with Discourse core. Si vous auto-hébergez et utilisez le plugin, vous devez le supprimer de votre app.yml avant votre prochaine mise à niveau.

x-ref

1 « J'aime »