我注意到有一些关于这个的帖子,其中大部分都说这是仅适用于封闭社区的功能 使用 OpenId Connect 插件和 AWS Cognito 自动登录 - support - Discourse Meta
如何在应用程序 Web 视图中自动登录用户 - dev / sso - Discourse Meta
我们希望有一个社区,您只能通过我们的产品注册流程获得帐户,但我们希望论坛的内容可见,这样如果人们试图通过 Google 自助服务,他们就可以获得适当的结果,同时又是未经验证的。(也为了让我们潜在地实现一些内容 SEO 目标)
这是可能的还是一个不切实际的愿望?似乎我不是第一个问这个问题或想要这个产品功能的人。
编辑:特别是,我指的是 OIDC 规范的这一特定方面 - Auto-sign-in with the OpenId Connect Plugin and AWS Cognito - #8 by david
pfaffman
(Jay Pfaffman)
2
所以问题是有些用户已经登录了您的 Cognito,您不希望他们在尝试回复时看到登录对话框?我以为使用 Discourse Connect 时这是默认行为。
您可以让网站对匿名用户和 Google 用户开放。
2 个赞
理想情况下,查看 Discourse 并拥有账户的用户应始终处于登录状态,这样我们就可以捕获他们所有的浏览数据。我将使其能够让产品用户在产品中点击链接查看社区时进行身份验证,以及任何用户只有在其他地方进行身份验证后才能看到的链接(例如,账户页面)。
但是,如果用户通过 Google 尝试自助服务并进入社区,我们就无法捕获该数据,直到他们尝试直接与社区互动,即使他们在我们系统的其他地方进行了身份验证。似乎解决此问题的唯一方法是启用 login_required 站点设置,如果我理解正确的话,这实际上会使站点变为私有。
谢谢。我不知道这个。我是一名社区经理,正试图了解三个独立产品的方方面面,这让我头昏脑胀,难以掌握每个产品的具体细节!预计我还会发布一些帖子来解决所有问题,感谢您的耐心。
2 个赞
simonk
(Simon King)
4
在一般情况下,这是不可能的(在不提示匿名用户登录的情况下,你如何知道他们是否拥有账户?)。然而,应该可以检测到用户在你的 SSO 站点中是否已拥有活动会话。
该主题已经很老了,但我认为这个原理仍然适用。基本上,添加一个具有适当 CORS 支持的 URL,该 URL 返回一个 JSON 响应,指示用户是否拥有活动会话。然后,在你的 Discourse 主题中添加一些 JavaScript,该 JavaScript 查询该 URL,并在存在活动会话时触发 SSO 过程。
2 个赞
david
(David Taylor)
5
恐怕笼统的答案和上次一样
我所说的规范是OpenID Connect Session Management。不幸的是,基于 iframe 的解决方案越来越不实用,因为许多浏览器现在默认阻止第三方 cookie。现在,只有当您的身份提供商和 Discourse 具有相同的“源”时,它才能可靠地工作。
正如 @simonk 所说,根据您的身份提供商,可能可以通过主题组件实现一些自定义功能,但我不知道有什么通用的解决方案可以添加到 Discourse 本身。
3 个赞
david
(David Taylor)
7
您说得对,点击“回复”会触发登录流程。如果使用了 DiscourseConnect(或任何其他单一登录提供商),则会跳过 Discourse 登录模态框 
但是,我认为 OP(发帖人)希望用户能够自动登录,而无需点击“回复”或“登录”。通过这种设置,用户可以在主站点和社区之间无缝切换。我们已经为几位客户实现了这一点,但这些都是定制化实现,不易推广。
举个例子:如果您的论坛在 forum.example.com 上,而您的主站点在 example.com 上,那么论坛可以读取 example.com 的 cookie。因此,一个主题组件可以检查 cookie 的存在并执行类似以下操作:
const cookie = require("discourse/lib/cookie").default;
if(cookie('name_of_example_com_auth_cookie') && !api.getCurrentUser()){
// 用户拥有 example.com 的身份验证 cookie。他们几乎肯定
// 在那里登录了,所以我们来运行身份验证流程
window.location = "https://forum.example.com/auth/oidc"
}
(这里有各种条件适用。例如,cookie 不能是 http_only,也不能是仅主机 cookie 等。)
5 个赞
确实如此。很高兴知道这是可能的,但需要定制。
另外,由于我不知道用户点击回复是否会根据实现方式跳过登录对话框,这将在很大程度上缓解我最初的担忧。这是我想避免的主要障碍,我很高兴它可以实现。
当然,我内心的数据极客想要理想的版本,我们也许会朝着那个方向努力。知道现在这是可能的就足够了。再次感谢大家的时间。
2 个赞
system
(system)
关闭
9
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.