Genyus
(Gary McPherson)
1
我正在尝试更清晰地了解我们正在进行的重组项目中的选项。我一直在论坛中搜索以获取更多见解,虽然我找到了一个类似的查询,但原帖作者的场景与我们的情况略有不同,因此我创建了这个新主题。
目前,我们在 domain.com 有一个 WordPress 站点,它被配置为 community.domain.com 处 Discourse 实例的 SSO 客户端。但 WP 站点正在被重组为一个多站点网络,例如 sub1.newdomain.com、sub2.newdomain.com 等,并且每个站点将对应一个独立的 Discourse 实例,例如 forum.sub1.newdomain.com(理想情况下是 sub1.newdomain.com/forum,如果我们能解决子目录配置问题)。
我们希望所有社区的用户拥有统一的身份。我们已知如何在某个 WP 子站点注册的用户在整个网络中进行同步。我了解到 一个 Discourse 实例可以作为另一个实例的 SSO 服务器,但尚未找到关于如何配置此功能,以及它是否适用于多个 Discourse 客户端的确认。
因此,我的问题如下:
- 在上述场景中,是否可以将
auth.newdomain.com 处的 Discourse 实例配置为既作为 WPMS 网络的 SSO 服务器,又作为所有与子站点关联的 Discourse 实例的 SSO 服务器?
- 如果上一个问题的答案是肯定的,那么是否可行将该“服务器”实例配置为仅提供身份验证相关功能?也就是说,它除了作为整个网络的身份验证“真实来源”外,不承载任何其他用途,无论用户希望针对哪个站点进行身份验证。或者,在这种情况下,更合适的做法是依赖外部身份验证解决方案?
2 个赞
jakeols
(Jake)
2
嘿——既然你链接到了我的原始主题,这个提示就弹出来了。我会让 @simon 来分享他们的看法,但有一个选项(可能对你有用,也可能没用,不过会简单得多)是:只搭建一个 Discourse 实例,然后利用群组来区分不同的论坛。你可以在 SSO 载荷中传递群组信息。
不过,让多个论坛共用一个提供 SSO 的论坛应该相当直接(虽然我还没亲自试过)。我认为步骤如下:
- 安装 WP Discourse 插件,并将其配置为 SSO 客户端(在网络选项中设置)。
- 设置你希望作为 SSO 提供者的 Discourse 论坛(在 WP 和 Discourse 中添加密钥等)。
之后,在添加后续论坛时,只需将它们配置为 SSO 客户端即可(由于 WP Discourse 已在网络层面完成设置,添加新站点时无需修改任何配置)。
希望以上内容能对你有所帮助!
2 个赞
Genyus
(Gary McPherson)
3
非常感谢你分享建议,@jakeols。我知道群组是常被推荐的替代方案,但它并不适合我们特定的使用场景。
希望 @simon 能提供一些关于此处哪些可行、哪些不可行的见解。
1 个赞
simon
4
就 Discourse 与 WordPress 的集成而言,我有些脱节了——尤其是在多站点(multisite)设置方面。有关详情,请参阅:https://meta.discourse.org/t/pavilion-is-now-maintaining-and-developing-the-wp-discourse-plugin/168007/2。
我认为自从我发布此帖子以来,情况并未发生变化:https://meta.discourse.org/t/discourse-as-sso-provider-for-wordpress-multisite/119617/2。不过,该帖子中的信息值得单独开辟一个主题讨论。
您可以在多站点网络上使用 Discourse 作为 SSO 提供商。但仅当您将单个 Discourse 站点设置为该网络上所有站点的 SSO 提供商时,该功能才会被启用。原因是在多站点网络中,所有用户都存储在同一个数据库表中。如果允许多个 Discourse 站点作为网络中多个站点的 SSO 提供商,则无法简单保证保存在 WordPress 中的 Discourse 用户 ID 是唯一的。
当 WP Discourse 插件安装在多站点网络上时,网络管理菜单中会添加一个 Discourse 选项卡。要将 Discourse 配置为网络上所有站点的 SSO 提供商,请进入网络管理页面,从菜单中选择 Discourse。选择“启用多站点配置”选项,然后填写连接设置。接着向下滚动页面至 SSO 设置部分,选择“启用 SSO 客户端”选项。输入您的 SSO 密钥并保存设置页面。
需要注意的是,在多站点网络上启用 SSO 客户端功能可能会使您 Discourse 论坛上的任何用户都能访问您网络中的任何站点。
基本上,如果您试图通过 Discourse 作为 WordPress 多站点网络的 SSO 提供商来实现除此之外的其他目标,那就只能自行探索了。从技术上讲,允许多个 Discourse 站点作为 WordPress 网络中各个独立站点的 SSO 提供商是可行的,但所需的配置将过于复杂。我认为这永远不会被添加到 WordPress 插件中。
1 个赞
Genyus
(Gary McPherson)
5
非常感谢你的回复。你引用的帖子正是我在原帖中提到的内容。在 WordPress 方面我们并没有什么问题——我们了解如何在网络层进行连接,然后同步所有子站点的用户。我更想了解的是,如何配置一个 Discourse 实例作为另一个 Discourse 实例的 SSO 服务器?我想确认一下,是否可以在该“认证”Discourse 同时作为 WordPress 的 SSO 服务器的情况下实现这一配置。
我尚未找到关于 Discourse 与 Discourse 之间对接的任何文档。如果你能指引我去哪里查找更多信息,或者简要说明所需的步骤,我将不胜感激。
1 个赞
angus
(Angus McLeod)
6
嘿,Gary,
我理解你的出发点,但 Discourse 并非设计为仅用于身份验证目的。我建议你将一些时间投入到考虑一个专用的身份验证服务,并将其与你的各个 Discourse 和 WordPress 实例连接起来。现在在调研上投入一点精力,未来会收获回报。
这相对直接。例如,如果我希望将 try.thepavilion.io 作为 test.thepavilion.io 的身份验证提供者。
步骤 1:将 try 设置为 SSO 提供者
步骤 2:将 test 设置为 SSO 客户端
不过,我最重要的建议是:你提出的方案相当复杂。无论你选择哪条路径,都需要搭建一个镜像预期生产环境的测试环境,以便在部署前尝试不同的配置。此类设置可能受到多种变量的影响,很难在抽象层面给出具体建议。
我知道为相互连接的服务器网络搭建一个完全独立的测试环境可能看起来繁琐,但与此相比,一旦部署后试图解决那些意想不到的问题,所耗费的工作量会大得多。
4 个赞
Genyus
(Gary McPherson)
7
嘿,Angus!
是的,我确实认识到 Discourse 并非纯粹的身份验证服务。我们正在考虑三种潜在方案:
- 将 Discourse 用作我们的身份提供商
- 将 WordPress 用作我们的身份提供商
- 使用外部(SaaS 或自托管)身份提供商
每种方案在成本、复杂性和用户体验方面都有不同的影响,这也是我在这里提问的原因。
不,你说得完全正确,这确实很复杂,我们绝不会在未先在测试环境中进行验证的情况下就部署它。非常感谢你的详细解释,我们非常感激!
1 个赞
system
(system)
关闭
8
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.