Discourse 论坛 SSO 在 iframe 中的问题

你好,我想将论坛以 iframe 形式嵌入到网站中。

论坛将通过 SSO 进行登录。iframe 嵌入功能运行正常。但由于 Discourse 端设置了 samesite lax 属性,SSO 流程无法设置登录 Cookie。是否有人也遇到过这个问题?或者是否有人成功将论坛嵌入网站并通过 SSO 进行连接?

提前感谢。

只是提醒你,Discourse 在 iframe 中运行效果不佳(甚至完全无法运行)。所以你这已经是在自找麻烦了 :wink:

非常感谢如此迅速的回覆 :slight_smile:

image

嗯,好的,我在 Discourse 设置部分找到了一个选项,允许将论坛以 iframe 形式嵌入到其他网站中。该设置可以生效(前提是您已登录并拥有相应的 cookie)。

唯一无法正常工作的是 SSO 流程。当在新标签页中打开论坛时,我们的 SSO 流程运行正常且正确。但由于 iframe 跨域,无法设置包含访问令牌的 cookie,导致该流程在 iframe 中失效。这会在 iframe 内部引发无限循环:Discourse 找不到该 cookie,于是再次启动 SSO 流程。

由于这对我们非常重要,是否有任何方法可以在使用 SSO 认证的同时将论坛嵌入到 iframe 中?

该设置相当实验性,在单点登录(SSO)环境中并不真正受支持。重定向返回时需要执行一些复杂的操作,才能将所有信息传递回框架中。

我强烈建议您直接使用自定义页眉和页脚,将其设置得与主站外观一致非常简单。

感谢您的回复。

我们将尝试使用自定义的页眉和页脚。

请问近期是否有计划让 discourseSSO 能够在 iframe 中工作?当用户希望将论坛嵌入其网站而无需实现所有 Discourse API 时,此功能将非常有用。

iframe 与 API 有什么关系?

亲爱的 Stephan,

我们已经在应用程序的 WebView 中使用带有 SSO 的论坛。我们计划将论坛集成到正在构建的新网站中。我认为我们有两个选择:

选项 1:实现多个 API(例如检索帖子、分类以及向 Discourse 发布内容)。

选项 2:结合 SSO 将论坛以 iframe 形式嵌入我们的网站。(成本效益高,我们可以在投入更多资源之前先评估论坛是否成功)

因此,回答您的问题:iframe 选项与 API 无关。

近期是否有计划让 Discourse SSO 在 iframe 中运行?

SSO 协议会重定向到你的网站,你随后执行身份验证并重新定向回我们的网站。

如果要在其中设置 IFRAME,你在完成用户身份验证后执行的重定向必须指向你的网站,然后你需要通过某种“魔法”将信息传回 IFRAME。

这在技术上非常复杂且很难正确实现。相比之下,自定义页脚和页眉的方案在技术上要简单得多,出错概率更低,而且作为一个额外优势,速度更快,因为你无需为构建页面发起两次独立的请求。