禁用 SAML 的本地登录

您好,我已成功设置 SAML 集成,现在有几个帐户与 SAML 关联。

我的问题是,我是否可以禁用拥有 SAML 帐户的用户的本地登录,以便他们无法使用用户名/密码登录?

是的。如果 SAML 正常工作,您可以禁用本地登录;我认为这也会禁用电子邮件登录,因此您无需再执行此操作。

是的,我知道这个选项,但这是一个全局选项,我需要的是每个用户选项。
我的用户一半是内部用户,一半是外部用户。
外部用户只能使用本地登录,内部用户必须使用SAML,在这里我想删除(或禁用)本地登录的可能性。

这可能吗?

那会如何运作?如果他们没有登录,怎么会是每个用户的选项?

我想你可以有一个插件,如果用户属于某个特定组并且没有使用 SAML,该插件就会拒绝他们登录。我认为这需要 2 到 4 小时的工作?也许加上详细的规格会更长。但我还没看。如果你有预算,可以在 Marketplace 询问。

嗨 Jay,好的,也许我用词不当。抱歉。 :slight_smile:

我在考虑一个选项,类似于:

禁用/不允许拥有已激活关联的 SSO(外部?)账户的用户进行本地登录

制作一个插件是个好主意,我会去看看,谢谢!
不,没有预算……

1 个赞

请记住,这不仅仅是筹集资金来编写插件的问题。您还需要维护它,以便在 Discourse 升级时它能够继续正常工作。

如果您负担不起上述费用,也没有能力自己编写一些东西,那么您可能不得不接受用户偶尔在本地登录而不是使用 SSO。

是的,我知道。

你说得对。一种选择是更改他们的密码,但我认为我无法阻止他们重置密码并再次使用本地登录。

如果 SAML 登录与他们的本地帐户相关联,那有什么问题?

SAML 是一个中央 IDM,并且只能从内部(公司)LAN 访问,而 Discourse 服务器是公开的。

我们希望内部用户只能从办公室(或 VPN)登录,但他们可以使用本地登录方法,可以从任何地方登录,并且我们无法禁用他们通过 SAML/IDM 登录(这必须在论坛上手动完成)。

这没什么大不了的,但我们有一项政策,要求尽可能连接到中央 IDM,

您可以将内部用户(通过 SAML 登录的用户)添加到组中。然后使用 JS 从该组隐藏本地登录部分。您还可以添加 JS 以从不在该组中的用户隐藏 SAML 登录。

这只是一个变通方法,但可能足以阻止您的用户使用错误的登录方式。

1 个赞

但是,由于他们在登录页面时未登录,因此无法向拥有 SAML 登录的用户隐藏 SAML 登录。或许可以采取一些措施来隐藏非公司 IP 地址用户的 SAML 登录,但我不知道该怎么做。

2 个赞

啊!你说得对 :woman_facepalming:t4: 如果他们使用公司 VPN,也许检查 IP 地址会奏效,但除此之外,就别指望我的解决方案了 :sweat_smile:

3 个赞

不确定这是否有用,因为无论如何都行不通。如果SSO地址在外部无效,浏览器就无法通过公共互联网访问它。

SAML是一种身份验证协议,而不是IDM或IdP——它必须从其他地方获取数据。您的IDM可能也支持SAML,但除非您能告诉我们这个后端系统是什么,否则我们将难以在此帮助您。

1 个赞

确实如此

是的,我知道,身份验证服务是内部 ADFS。但我的问题既不是关于 SAML 也不是关于 ADFS,因为外部登录工作得非常好,我很喜欢。

我想知道是否有一种方法可以在一个帐户中启用一个身份验证源并禁用所有其他源,或者换句话说,禁用那些具有有效 SSO 的用户的本地登录。

我明白这可能只会在登录尝试后发生,这不成问题。

您需要创建一个插件,该插件可以执行诸如测试他们是否是某个组成员,然后如果他们属于 must_use_saml 组但未使用 saml 登录,则将其注销的操作。

对于熟悉此类工作的开发人员来说,这可能需要一到两个小时,具体取决于所需的测试量以及是否创建了规范。

1 个赞

谢谢 Jay,我会试试的!

1 个赞

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.