SAML 登录的着陆页

在之前的版本中,会显示一个登录页面,其中包含“登录”按钮。点击该按钮后会显示 SAML 登录页面。我个人非常喜欢这种行为。但在当前版本 2.4.2 中,这已无法实现,因为 SAML 登录页面会立即显示。这可以配置吗?

我不太明白,您的意思是我们展示了一个只包含“使用 SAML 登录”按钮的模态框吗?

不。
在之前的版本(我猜是 2.3.6)中,情况是这样的:

点击“登录”后,SAML 登录窗口会出现。

如果我启用“本地登录”,带有登录按钮的着陆页会再次出现,但我不希望启用本地登录,因此我需要将其禁用。

有人能帮我吗?也许 @eviltrout

我肯定不是故意更改的。如果您能帮我们追踪一下更改发生的时间,那将非常有帮助,这样我们就能了解相关背景。

这可能是因为安全原因而发生的更改。

这是一项长期被请求的改进,旨在当 OmniAuth 登录方式仅有一种时,使其行为符合真正的单点登录(SSO)标准。

我能帮您什么?

一个小提示:如果您启用“本地登录”,将显示“登录页面及登录按钮”。

如果您确实需要确认页面,可以将用户链接到 /login(而不是首页)。这样不会自动触发登录。

但请注意,这并非正式支持的功能,仅是实现上的一个特性,随时可能发生变化。

新行为更优,且与 SSO 登录保持一致。如果需要在登录前显示消息,可在身份提供商中实现。

啊,知道了。我知道两个原因:

  • 展示一个非常漂亮的着陆页,包含一些基本信息,而不是那个“无聊”的登录窗口
  • “安全性”(我知道,这其实不是个大障碍)。希望在主 URL(没有着陆页)上的廉价黑客脚本会失效,因为必须先点击登录按钮。

可以配置这种行为吗?

您需要在这里聘请一名开发人员来构建一个插件以更改此设置。就目前而言,这是几个月来我听到的关于新系统的首个投诉。

我是开发者 :-)(请查看我在 discourse_saml 中的更改)

您会接受一个添加配置选项的 PR 吗?(默认:新行为)

自动重定向不应引入任何安全漏洞。如果您发现任何可利用的漏洞,请通过我们的漏洞披露计划告知我们:discourse/docs/SECURITY.md at main · discourse/discourse · GitHub

我认为在有更多用户请求此更改之前,我们不想在设置中增加更多干扰项。

您可以通过插件覆盖此方法来实现,只需修补该方法即可:

因此,我认为您应该将函数简化为:

def redirect_to_login
  dont_cache_page
  cookies[:destination_url] = destination_url
  redirect_to path("/login")
end

谢谢,非常感谢!
顺便说一句:你们在 Discourse 方面做得非常出色。