您好,
我们正使用来自 Drupal 的单点登录(SSO),但此处存在一个非预期的行为:所有用户除了当前的会话外,还会看到我们的 Drupal 服务器显示为已登录状态。这在我们的社区中引起了大量担忧和困惑,因为他们看到了一个并非他们自己的设备显示为已登录。
是否可以禁用此功能?或者,更好的是,我们能否排除某些 IP 地址,以便在“最近使用的设备”列表中隐藏我们的服务器?
您好,
我们正使用来自 Drupal 的单点登录(SSO),但此处存在一个非预期的行为:所有用户除了当前的会话外,还会看到我们的 Drupal 服务器显示为已登录状态。这在我们的社区中引起了大量担忧和困惑,因为他们看到了一个并非他们自己的设备显示为已登录。
是否可以禁用此功能?或者,更好的是,我们能否排除某些 IP 地址,以便在“最近使用的设备”列表中隐藏我们的服务器?
使用外部 SSO 提供商不会导致其出现在此列表中。
您看到的内容可能是其他操作(例如为用户创建 API 密钥等)的遗留问题。
我以前在 Drupal 站点作为 Discourse 的 SSO 提供商时遇到过这个问题。我尚未在其他 SSO 提供商中看到类似的问题。您是否使用了某个 Drupal 模块来实现 SSO?如果是,能否告知我们该模块的下载地址?
您可以通过 CSS 隐藏“最近使用的设备”部分。这可能是解决该问题的一个不错的临时方案。
.control-group.pref-auth-tokens {
display: none;
}
我们使用的是 Discourse Forum Integration 贡献模块:https://www.drupal.org/project/discourse
感谢你的提示,我们暂时通过 CSS 将其隐藏。但最好能确认一下是否可以通过配置,仅在我们的服务器列表中隐藏我们的服务器,以便用户仍能查看他们最近使用的设备。
我建议联系 Drupal 开发者——该模块上次更新似乎是在 2015 年,列出的 Discourse 版本支持为 1.2.0.beta5(由我们于 2015 年 1 月发布)。虽然很高兴看到它仍然可以运行,但出现一些小问题并不意外。
值得补充的是,上面链接的 Drupal 模块仅适用于 Drupal 7,而 Drupal 7 将于 2021 年 11 月 停止支持。(虽然不是明天,但也为时不远了。)
是的,谢谢,我们已知晓(但对此并不感到高兴,因为我们的网站刚刚上线
)
我快速浏览了 Drupal Discourse 模块。目前还不清楚导致该问题的具体原因,但在 SSO 登录期间,User Agent 和客户端 IP 似乎被设置成了 Drupal 服务器的值,而不是用户的真实 IP 和 User Agent。这可能与 drupal_goto 方法的工作方式有关。
我注意到该模块还提供了一些在 Drupal 上展示 Discourse 内容的功能。为此,它会向 Discourse 发起 API 请求,并将 API 凭证直接放在查询字符串中。Discourse 已经弃用了这种 API 认证方式。在不久的将来,这类请求将不再有效。如果您正在使用该模块在 Drupal 站点上展示 Discourse 内容,可能需要进一步研究此问题。
该模块上次更新于 2015 年。目前有一个更新更及时的 Drupal Discourse SSO 模块:https://www.drupal.org/project/discourse_sso。不过,我认为它仅提供 SSO 功能,似乎没有包含将 Discourse 内容集成到 Drupal 站点的代码。
感谢补充信息,Simon。我们确实正在这样做:我们的博客评论区使用 Discourse 话题供用户进行讨论,该话题的内容随后也会显示回 Drupal 上的博客文章中。
这是否是了解 API 认证弃用相关信息的合适地方?Discourse REST API Documentation
再次感谢!
是的,该主题开头提供的 POST 请求示例包含了您所需的信息。要修复 Drupal Discourse 模块以使用基于头的认证方式,只需对其代码进行小幅修改即可。
假设您的 Discourse 站点已更新至最新版本,您的 Discourse 管理仪表板上很可能会有关于在 API 请求中使用已弃用认证方法的警告。