DiscourseConnectにログインできません

DiscourseConnect のインストールを、こちらの手順 に従って行ったところ、どうやら失敗してしまったようです。

幸いにも、その手順には管理者設定を直接操作する方法が記載されていますが、私が特に必要としている設定項目が変更されたのかもしれません。

手順では SiteSetting.enable_sso=false と設定するよう指示されていますが、以下のエラーが発生します:

root@hestia-app:/var/www/discourse# rails c
[1] pry(main)> SiteSettings.enable_sso=false
NoMethodError: undefined method `enable_sso=' for SiteSettings:Module
from (pry):1:in `__pry__'
[2] pry(main)> 

新しい管理者設定が何であるかご存知の方はいらっしゃいますか?

よろしくお願いいたします!

「いいね!」 1

ああ、Discourse が DiscourseConnect の記事を丁寧にリンクしてくれました。そして、こうなりました:

cd /var/discourse
./launcher enter app
rails c
irb > SiteSetting.enable_discourse_connect = false
irb > SiteSetting.enable_local_logins = true
irb > exit
exit
「いいね!」 1

それを見つけてくれて、とても嬉しいです。WP Discourse プラグインのオプションページで enable_sso 設定への言及が見つかる場合、それらはプラグインの最新リリース(バージョン 2.3.0)で新しい enable_discourse_connect 設定名を使用するように変更されるべきです。

もし Meta 上のプラグインのドキュメントに古い設定名の言及が残っている場合は、それらを新しい設定名に更新する必要があります。来週の初めに再度確認いたします。

DiscourseConnect の設定中、管理者は Discourse サイトの /u/admin-login ページに移動することで SSO ログインを回避できます。ページにあるフォームにメールアドレスを入力してください。ワンタイムログインリンクがメールで送信されます。

「いいね!」 1

lol

はい、ログインページが表示されましたが、ログインするとすぐにログアウトされ、再びログインページにリダイレクトされてしまいます。

/u/admin-login メソッドを使用しても、ログアウトとリダイレクトが発生します。設定すべき、または設定を解除すべき他の値はありますか?

–追記–

Rails の rails c コマンドラインから、管理者設定値を確認する方法はありますか?

「いいね!」 1

Discourse では、以下の設定が必要です。

  • enable_discourse_connect
  • discourse_connect_url(WordPress サイトのホームページに設定する必要があります)
  • discourse_connect_secret(WordPress サイトの DiscourseConnect 秘密鍵設定に入力した値と一致していることを確認してください)

また、Discourse の verbose_discourse_connect_logging サイト設定を有効にすることをお勧めします。この設定を有効にすると、Discourse のエラーログに問題の原因に関する有用な詳細情報が表示される場合があります。

WordPress 側では、DiscourseConnect 秘密鍵設定に入力済みであることを確認してください。WordPress で有効にする必要があるもう一つの設定は、「DiscourseConnect プロバイダーを有効化」設定です。

「いいね!」 1

@simon ありがとうございます!verbose_discourse_connect_logging のヒントに感謝します。

さて、enable_discourse_connectfalseenable_local_loginstrue のようです。

何か分かる方はいますか?

管理者ログイン用メールリンクをクリック

Started GET "/session/email-login/5356b2413338852f25d4382e34fb53a6" for {my.ip.address} at 2021-08-07 02:33:43 +0000
Processing by SessionController#email_login_info as HTML
  Parameters: {"token"=>"5356b2413338852f25d4382e34fb53a6"}
  Rendered default/empty.html.erb within layouts/application (Duration: 0.1ms | Allocations: 11)
  Rendered layout layouts/application.html.erb (Duration: 41.1ms | Allocations: 8102)
Completed 200 OK in 66ms (Views: 43.4ms | ActiveRecord: 0.0ms | Allocations: 12210)
Started GET "/session/email-login/5356b2413338852f25d4382e34fb53a6.json" for {my.ip.address} at 2021-08-07 02:33:48 +0000
Processing by SessionController#email_login_info as JSON
  Parameters: {"token"=>"5356b2413338852f25d4382e34fb53a6"}
Completed 200 OK in 25ms (Views: 0.3ms | ActiveRecord: 0.0ms | Allocations: 4548)

次に、Discourse インストールページ上のログインリンクをクリック

Started GET "/session/csrf" for {my.ip.address} at 2021-08-07 02:33:56 +0000
Processing by SessionController#csrf as JSON
Completed 200 OK in 2ms (Views: 0.3ms | Allocations: 308)

Started POST "/session/email-login/5356b2413338852f25d4382e34fb53a6" for {my.ip.address} at 2021-08-07 02:33:57 +0000
Processing by SessionController#email_login as */*
  Parameters: {"second_factor_method"=>"1", "timezone"=>"America/Denver", "token"=>"5356b2413338852f25d4382e34fb53a6"}
Completed 200 OK in 231ms (Views: 0.3ms | ActiveRecord: 0.0ms | Allocations: 24272)

ここで何かがおかしくなります

Started GET "/" for {my.ip.address} at 2021-08-07 02:33:58 +0000
Processing by ListController#latest as HTML
Redirected to http://my.discourse.install/login
Filter chain halted as :redirect_to_login_if_required rendered or redirected
Completed 302 Found in 2ms (ActiveRecord: 0.0ms | Allocations: 613)

その後、ログイン画面が表示されます(問題なく動作しています)

Started GET "/login" for {my.ip.address} at 2021-08-07 02:33:59 +0000
Processing by StaticController#show as HTML
  Parameters: {"id"=>"login"}
  Rendered static/login.html.erb within layouts/application (Duration: 38.2ms | Allocations: 1520)
  Rendered layout layouts/application.html.erb (Duration: 103.4ms | Allocations: 12203)
Completed 200 OK in 130ms (Views: 105.7ms | ActiveRecord: 0.0ms | Allocations: 16261)
Started GET "/login.html" for {my.ip.address} at 2021-08-07 02:34:04 +0000
Processing by StaticController#show as HTML
  Parameters: {"id"=>"login"}
  Rendered static/login.html.erb (Duration: 22.0ms | Allocations: 1352)
Completed 200 OK in 25ms (Views: 23.0ms | Allocations: 1970)
「いいね!」 1

また、$rails c CLI で使用できるコマンドに、すべての管理者設定と値のペアをダンプするものはあるでしょうか?DiscourseConnect 関連の設定をすべてリセットして最初からやり直そうかと思っています。あるいは、もっと単純に、すべての管理者設定を初期状態に戻す CLI コマンドがあるかもしれません。

—追記—

lol、SiteSetting.all を見つけました。これは情報のダンプがかなり過激ですね。フィルター機能はありますか?

—追記—

別の投稿でこのちょっとした gems を見つけました:

puts SiteSetting.all.map {|s| "#{s.name}: #{s.value}" }.join "\n"

…そして、DiscourseConnect に関連するすべての設定をリセットしました。それでも奇妙なログインリダイレクトが発生します。

enable_bookmarks_with_reminders: t
meta_category_id: 2
staff_category_id: 3
lounge_category_id: 4
default_theme_id: 1
tos_topic_id: 4
guidelines_topic_id: 5
privacy_topic_id: 6
welcome_topic_id: 7
lounge_welcome_topic_id: 8
admin_quick_start_topic_id: 9
push_api_secret_key: {redacted}
send_welcome_message: f
has_login_hint: f
global_notice: 
default_trust_level: 1
default_email_digest_frequency: 1440
bootstrap_mode_enabled: t
title: {redacted}
site_description: {redacted}
short_site_description: {redacted}
login_required: t
must_approve_users: t
contact_email: {redacted}
contact_url: {redacted}
site_contact_username: system
company_name: {redacted}
base_font: oxanium
heading_font: system
logo: 3
logo_small: 4
force_https: t
allow_user_locale: t
categories_topics: 25
suggested_topics: 7
share_links: email
share_quote_buttons: email
default_dark_mode_color_scheme_id: 1
topics_per_period_in_top_summary: 25
unicode_usernames: f
enable_names: f
enable_user_directory: f
allow_anonymous_posting: t
anonymous_posting_min_trust_level: 0
allow_uncategorized_topics: f
show_copy_button_on_codeblocks: t
max_image_megapixels: 150
max_image_size_kb: 10000
max_attachment_size_kb: 10000
clean_up_uploads: t
external_system_avatars_enabled: f
vapid_public_key: {redacted}
vapid_private_key: {redacted}
vapid_public_key_bytes: {redacted}
vapid_base_url: {redacted}
enable_local_logins: t
enable_discourse_connect: f
pop3_polling_username: {redacted}
enable_discourse_connect_provider: f
discourse_connect_allows_all_return_paths: f
discourse_connect_url: 
discourse_connect_secret: 
「いいね!」 1

新しいアカウントを追加しようとすると、以下のエラーメッセージが表示されます:

アカウントが作成されたか検出できません。クッキーが有効になっていることを確認してください。

ええっ?もう一度インストールし直したほうがいいかな???

—追記—

サインアップ確認メールは届きました。正常に機能し、新しいユーザーとしてログインしようとすると、以下のメッセージが表示されました:

このフォーラムにアクセスするには、モデレーターが新しいアカウントを手動で承認する必要があります。承認されるとメールでお知らせします!

はは… :man_facepalming:

—追記—

一言言いたかっただけですが、Discourseの複雑さは気に入っています。これは素晴らしいソフトウェアです。本当に近いのは XF だけです。数年前、[unknown] が SimpleMachines の主要開発者だった頃も素晴らしいものでしたが、その時代はすでに遠い過去のことです。すべての開発者に感謝します。皆さんが作り上げたこの優れでエレガントなシステムは本当に素晴らしいです。

「いいね!」 1

実際のエラーは CSRF トークンの真正性を検証できません のようです。解決策はこのスレッドにあります:Can't Login to Discourse - CSRF Token Authenticity

apache2.conf ファイルに以下の行を追加しました:

RequestHeader set X-Forwarded-Proto https

エラーログは以下の通りです:

Started POST "/session" for {my.ip} at 2021-08-07 11:45:54 +0000
Processing by SessionController#create as */*
  Parameters: {"login"=>"{me}", "password"=>"[FILTERED]", "second_factor_method"=>"1", "timezone"=>"America/Denver"}
Can't verify CSRF token authenticity.
  Rendered text template (Duration: 0.0ms | Allocations: 1)
Filter chain halted as :verify_authenticity_token rendered or redirected
Completed 403 Forbidden in 13ms (Views: 1.5ms | ActiveRecord: 0.0ms | Allocations: 898)
「いいね!」 2

原因がわかって良かったです。Discourse の設定について伺いたいのですが、標準的な Docker インストールは使用されていないのでしょうか?

Install and configure the WP Discourse Wordpress plugin for Discourse の参照を更新しました :+1:

「いいね!」 3

Docker は使用しましたが、Hestia コントロールパネルの仮想ホストとして実行できるよう、Apache2 の裏でリバースプロキシ設定を行いました。Hestia は Nginx ではなく Apache2 でセットアップしていたため、Apache2 を使用しました。

このスレッドの末尾をご覧いただければ、私の設定が確認できます。

「いいね!」 2

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.