Discourse フォーラムの iframe 内での SSO に関する問題

こんにちは、フォーラムをウェブサイトに iframe として埋め込みたいと考えています。

フォーラムは SSO 経由でログインします。iframe 埋め込み自体は正常に動作しています。しかし、Discourse 側で ‘samesite lax’ 属性が設定されているため、SSO プロセスでログインクッキーを設定することができません。この問題を経験された方はいますか?あるいは、フォーラムをウェブサイトに iframe として埋め込み、SSO で接続することに成功された方はいますか?

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

「いいね!」 1

Discourse は iframe 内では(もし動作する場合でも)うまく機能しないことをお知らせします。つまり、すでにトラブルを招くようなことをしていることになりますね :wink:

「いいね!」 3

迅速なご回答、ありがとうございます :slight_smile:

image

なるほど、わかりました。Discourse の設定セクションに、フォーラムを他のサイトへ iframe として埋め込むための設定があるのを発見しました。この設定は(すでにログインしていて Cookie がある場合)機能します。

ただし、唯一機能しないのが SSO プロセスです。フォーラムを新しいタブで開く場合、私たちの SSO プロセスは正常に動作します。しかし、iframe 内ではドメインが異なるためアクセストークンを含む Cookie を設定できず、このプロセスが破綻してしまいます。その結果、Discourse がこの Cookie を見つけられず SSO プロセスを再度開始するため、iframe 内で無限ループが発生してしまいます。

これは私たちにとって非常に重要ですので、SSO 認証を使用しながらフォーラムを iframe として埋め込む方法はないでしょうか?

この設定は非常に実験的であり、SSO 環境では正式にサポートされていません。リダイレクト先でフレームにすべての情報を渡すための高度な処理が必要になります。

カスタムヘッダーとフッターを使用することを強くお勧めします。メインサイトと同じ見た目になるように設定するのは非常に簡単です。

「いいね!」 3

ご返信ありがとうございます。

カスタムヘッダーとフッターでの実装を検討します。
近い将来、Discourse SSO を iframe 内で動作させる予定はありますか?この機能があれば、Discourse のすべての API を実装せずにサイトを埋め込みたい場合に非常に役立ちます。

iframe と API にはどのような関係がありますか?

ステファン様

私たちはすでに、アプリ内の WebView 内で SSO を使用してフォーラムを利用しています。現在構築中の新しいウェブサイトにもフォーラムを統合したいと考えています。これには、主に以下の 2 つの選択肢があると考えています。

オプション 1: いくつかの API を実装する(例えば、投稿やカテゴリの取得、Discourse への投稿など)。

オプション 2: SSO と組み合わせて、フォーラムを iframe で当社のウェブサイトに埋め込む。(コスト効率が高く、フォーラムが成功するかどうかを投資する前に確認できるため)

したがって、ご質問への回答となりますが、iframe 方式は API とは直接関係ありません。

近い将来、Discourse SSO を iframe 内で動作させるような計画はございますでしょうか?

「いいね!」 1

SSO プロトコルはあなたのサイトにリダイレクトし、そこで認証を実行してから当サイトにリダイレクト戻します。

もしここに IFRAME を設定する場合、ユーザー認証後に実行するリダイレクトはあなたのサイトに向かう必要があります。その後、何らかの工夫をして情報を IFRAME 内に戻す処理が必要になります。

これは技術的に複雑で、正しく実装するのが非常に困難です。一方、カスタムフッターとヘッダーを使用するオプションは、技術的に実装がはるかに簡単で、エラーも起こりにくく、さらにはページ構築のために 2 回の別々のリクエストを強制されないため、高速になるという利点もあります。

「いいね!」 3