Discourse OAuth2 基本

問題を見つけました。ヘッダーが「Content-Type: application/json」に設定されていませんでした。上記の@qlandsでも同じだったことがわかります。

私にとって残る唯一の問題は、@nodomain さんと同じです。アカウントは正常に作成されますが、アバターが含まれていません。応答例:

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

そして、次のログに表示されるように、正しく解析されています。

OAuth2 Debugging: after_authenticate response:

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

画像の住所は正しいことを確認しました。サイズは300x300です。

この件について何かアイデアはありますか?

編集:誰かがアカウントを作成したところ、Gravatarから画像を取得しました。JSON内の有効な画像が、Gravatarからの空の結果で上書きされているのでしょうか?

OAuthプロバイダーとしてのAuthentik

現在Authentikを試していますが、AuthentikとDiscourseを連携させた経験のある方はいらっしゃいますか?

残念ながら、Discourseの公式サポートドキュメントは見つかりませんでした。

設定項目がたくさんあって、いじりがいがありますね :smiley:

Portainerは、よりシンプルなOAuth実装を提供しています。

参考までにPortainerをどうぞ:

「いいね!」 1

調子はどうですか?Authentik を使用して Discourse と Ghost で SSO を実装したいのですが、現在プロジェクトは保留中です。

何かアドバイスがあれば、大歓迎です :slight_smile:

「いいね!」 1

SSOが内部ネットワーク上にあり、Discourseが内部IPアドレスを使用してSSOサイトにアクセスしようとすると、アクセスできなくなるという問題に遭遇した方はいらっしゃいますか?

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'

ウェブページのエラー

おっと
このディスカッションフォーラムを支えるソフトウェアで予期せぬ問題が発生しました。ご迷惑をおかけして申し訳ありません。

エラーに関する詳細情報は記録され、自動通知が生成されました。確認いたします。

追加のアクションは必要ありません。ただし、エラー状態が続く場合は、サイトのフィードバックカテゴリにディスカッションのトピックを投稿することで、エラーを再現するための手順を含め、追加の詳細を提供できます。

ファイアウォールのログを確認しましたが、ブロックの記録は見つかりませんでした!さらに、discourseとSSOはどちらも内部ネットワーク上に配置されているため、ファイアウォールによるブロックやリクエストの傍受の問題はないはずです!

しかし、SSOサイトのIPアドレスを外部のパブリックネットワークに向け直すと、正常に動作します!

これはプラグインのバグですか、それとも私の設定の問題ですか?

内部SSOサイトのホスト名を「allowed_internal_hosts」サイト設定に追加できます。これにより、Discourseが接続できるようになります。

URLのclient_idappidに変更するにはどうすればよいですか?
私のサーバーはURLにclient_idをサポートしておらず、appidのみをサポートしています。
プラグインを変更する必要があります。
助けてください。

1年経っても、この投稿を手伝ってくれてありがとう! Authentik は今、私にとってうまく機能しています。

「いいね!」 3

こんにちは。ZaloでOAuth2を使用していますが、添付のような問題が発生しました。原因をご存知の方はいらっしゃいますか?

コールバックURLは次のように設定しました:https://sphere.daviteq.com/auth/basic_oauth2/callback

誰かauthentikの設定を共有してもらえませんか?すべて正しく設定されているはずなのですが、それでも(oauth2_basic) 認証失敗! Timeout::Error: Faraday::TimeoutError, Timeout::Error が出てしまいます

「いいね!」 1

:partying_face: このプラグインは、Bundling more popular plugins with Discourse core の一部として、Discourse コアにバンドルされるようになりました。セルフホストでこのプラグインを使用している場合は、次回のアップグレード前に app.yml から削除する必要があります。

x-ref

「いいね!」 1