SSO 経由での自動ログイン

SSO をセットアップし、正常に動作しています。しかし、メインのウェブサイトですでにログインしているユーザーが Discourse コミュニティにアクセスした際に、自動的にログインさせたいと考えています。具体的には、「ログイン」ボタンをクリックして SSO を開始し、ユーザーを元の Discourse のページに戻すようにしたいのです。

ログイン関連のコードをまだ見たばかりですが、カスタムテーマコンポーネントからログインを起動する方法について、何か知見をお持ちの方がいれば教えていただけないでしょうか。

これは可能ですが、SSO が誤設定された場合に SSO プロバイダーサイトへのログインで問題が発生する可能性があります。より安全なアプローチとしては、Web サイトに SSO ログインリンクを追加し、ユーザーがそのリンクをクリックすると自動的に Discourse にログインし、指定されたページへリダイレクトするように設定する方法があります。詳細は Create a DiscourseConnect login link をご覧ください。

どのような問題が発生する可能性があるか、詳しく教えていただけますか?

私のケースでは、特定のセッションにおいて訪問者がまずメインアプリにアクセスするわけではありません。彼らはコミュニティサイトにアクセスしますが、過去にメインアプリにログインした経験があります。ユーザーの操作なしに、ログインセッションを自動的に取得したいと考えています。

WordPress から Discourse へのユーザーログインを試みる際、WordPress のログインプロセスの一環として、ユーザーを Discourse に静かにリダイレクトし、その後 WordPress へ戻す方法で問題に直面しました。SSO の設定が誤っていると、ユーザーが WordPress へアクセスできなくなる(ロックアウトされる)可能性があります。

もしこのアプローチを試す場合は、Discourse で「sso allows all return paths」設定を有効にする必要があります。これを有効にすれば、ユーザーを以下のようにリダイレクトできます。

https://discourse.example.com/session/sso?return_path=path_back_to_your_sso_provider_site