Drupal Discourse SSOの問題

こんにちは、

Discourse は初心者で、Discourse SSO モジュールを使って、Drupal ウェブサイトとフォーラムを設定しようとしています。モジュールの指示とこのトピックに従いましたが、「mydrupalwebsite.com/discourse/sso」へのアクセスで 404 エラーが発生します。

このトピックが投稿されて以降、モジュールには API キーを使用する新しい設定が追加されましたが、その使い方がわかりません。

同じ問題に直面している方はいますか?

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

「いいね!」 2

使用しているDrupalモジュールのリンクを共有していただけますか?もしこの投稿でリンクされているモジュールであれば、最終更新が2015年3月であるため、問題が発生する可能性が高いです。

このDrupal SSOモジュールは2019年12月に更新されています:https://www.drupal.org/project/discourse_sso。試してみる価値があります。

「いいね!」 3

最新のバージョンの 2 番目を使用しています。

SSO シークレットと SSO URL を設定しましたが、ログインを試みると、期待通りにリダイレクトが行われているようですが、/discourse/sso は 404 ページが表示されます。

モジュールにはドキュメントはありますか?SSO を有効にする通常の手順は、Discourse の「sso url」サイト設定に SSO エンドポイントを追加し、「sso secret」サイト設定に SSO 秘密鍵を追加し、「enable sso」サイト設定を有効にすることです。初めて設定する際は、「verbose sso logging」サイト設定も有効にすることをお勧めします。この設定を有効にすると、SSO エラーの詳細がサイトのエラーログ(管理画面 / ログ / エラーログ)に表示されます。

Discourse の設定を有効にしたら、Discourse サイトの URL と「sso secret」を SSO プロバイダー側のサイトにも追加していることを確認してください。

表示されているエラーから推測すると、Discourse サイトで「enable sso」サイト設定が有効になっていない可能性があります。

SSO を有効にした後に Discourse サイトへのアクセスに問題が発生した場合、管理者は Discourse サイトの /u/admin-login にアクセスすることで SSO ログインを回避できます。ページにあるフォームに管理者のメールアドレスを入力してください。ワンタイムログインリンクが送信されます。

「いいね!」 1

ご支援いただき、誠にありがとうございます。残念ながら、このモジュールにはプロジェクトページに記載されている以上のドキュメントがありません。

私は「enable sso(SSO を有効化)」、「verbose sso logging(SSO ログの詳細出力)」をチェックし、「sso url」フィールドに “mywebsite/discourse/sso” を、「sso secret」フィールドにシークレット値を入力しました。

Drupal モジュールのガイドラインに従い、Discourse フォーラムの URL と SSO シークレットを対応するフィールドに入力しました。

しかし、ログインを試みると 404 エラーが発生します。その URL は以下の通りです:
https://mywebsite/discourse/sso?sso=bm9uY2U9MTJlMmI4ZWNjNzU4ZGE3YTg5ZWIwZDI2MmM5ZTUzOWEmcmV0dXJuX3Nzb191cmw9aHR0cHMlM0ElMkYlMkZmb3J1bXMuc2VnYS1tYWcuY29tJTJGc2Vzc2lvbiUyRnNzb19sb2dpbg%3D%3D&sig=96726cef3a6bb69a0863f66fb0e09ce3edb1ea77f3fd2d9e69cdaf932aede6a2

ログは以下の通りです:verbose_sso.txt (5,9 Ko)

もし問題が Discourse の設定にない場合、再度モジュールの開発者に連絡します。

改めてありがとうございます。

ログエントリを確認しましたが、エラーは表示されていません。これは Discourse 上で SSO プロセスが開始された際のログエントリに過ぎません。その後すぐに、エラーを示す別のログエントリが作成されるはずです。もう一度プロセスを実行してみてください。各ログイン試行に対して「Verbose SSO」ログエントリが生成されるはずです。最初のエントリは Discourse 側でプロセスが開始されたことを示し、2 番目のエントリは Discourse があなたのウェブサイトから受け取った応答をどのように処理したかを示します。

「Verbose SSO log」というテキストで始まらない、他の関連するエラーメッセージが存在する可能性もあります。SSO リクエストを行った直後の時刻のログエントリを再度ご確認ください。

再度試しましたが、先ほどと同じ3つの同一のログメッセージが表示されました。このまま進めると、私のウェブサイトからは一切応答がないことを意味することになります。

はい、その認識で正しいと思います。ブラウザのウェブインスペクターを開き、「Network」タブでリクエストを確認してみてください。そのタブで「Preserve Logs」オプションを選択し、Discourse サイトのログインリンクをクリックしてください。

「いいね!」 1

こんにちは、

この件に関する少しの更新情報です:Discourse SSO モジュール にパッチが適用され、サイトがクラッシュすることはなくなりました。

しかし、一度ログインすると正しくログアウトできないため、まだ機能していません。別のissue が作成されましたので、ご興味のある方はご確認いただけますと幸いです。

「いいね!」 1

フォローアップありがとうございます!モジュールの新しい問題が解決するかどうか、お知らせください。

了解しました、調査を続けています。

SSOでDiscourseに異なるアカウントでログインできない理由はあるでしょうか?もしかしてクッキーの設定が関係しているのでしょうか?

SSOを有効にした場合、ログアウトして再度ログインしようとすると、自動的に最初のアカウントでログインされてしまいます。

ただし、SSOを無効にするとそのような問題はありません。

これは、Discourse からのログアウトが SSO プロバイダーサイトのログアウトと同期されていないことが原因のようです。SSO プロバイダーサイトにまだログインしたままの状態であるため、Discourse のログインリンクをクリックすると、SSO プロバイダーへのログイン状態に基づいて認証が行われます。

Discourse の「logout redirect」サイト設定を使用すると、ユーザーを SSO プロバイダーサイトからログアウトさせることができます。ユーザーが Discourse からログアウトすると、自動的にその URL にリダイレクトされます。SSO プロバイダー側でその URL を処理してユーザーをログアウトさせる必要があります。ただし、Drupal について十分な知識がないため、これを実装するために何が必要かは確信が持てません。

「いいね!」 1

問題解決しました。まとめると:

  • このモジュール は正常に動作しますが、Drupal ユーザー画像にバグがあり、パッチが保留中です。
  • この投稿 は Discourse の設定について誤っています:sso_url は/discourse/ssoではなく/discourse_sso で終わる必要があります。
  • 複数の異なるアカウントでログインできるようにするには、ログアウトリダイレクトをhttp://mywebsite/user/logout に設定し、ブラウザで Ghostery を無効にする必要があります(このプラグインを使用している場合)。

ご協力ありがとうございます、@simon さん!

「いいね!」 2