【问题标题】:How to handle Discourse SSO when the authentication site allows users to change emails?当认证站点允许用户更改电子邮件时,如何处理 Discourse SSO?
【发布时间】:2019-01-24 07:59:50
【问题描述】:

我们使用基于本指南实施的 Discourse SSO 流程:https://meta.discourse.org/t/official-single-sign-on-for-discourse-sso/13045

它对我们来说效果很好。但是现在我们希望允许我们系统中的用户更改他们的电子邮件,这似乎会导致问题。

当我在我们的系统中更改我的用户的电子邮件时,SSO 到 Discourse 停止工作。

登录错误

您的帐户有问题。请联系网站的 管理员。

我猜 Discourse 收到了一个有效负载,其中包含不匹配的电子邮件和用户名,并且不知道该怎么做。

有什么好的方法来处理这个问题?

我想出的最佳想法是在启动 SSO 之前使用 Discourse API 更改用户在 Discourse 中的电子邮件以匹配系统中的电子邮件。

但我不知道这是否可能。以下是我失败的尝试。

这是我的要求:

https://forum-stage.{domain}.com/users/{username}/preferences/email

Headers:
Content-Type: application/x-www-form-urlencoded
Accept: application/json

Body (as x-www-form-urlencoded in Postman):
email: testemail@testdomain.com
api_key: 75a...77d
api_username: system

这是我收到的回复

{
    "errors": [
        "You are not permitted to view the requested resource."
    ],
    "error_type": "invalid_access"
}

【问题讨论】:

    标签: discourse


    【解决方案1】:

    肯定有一种方法可以在 SSO 提供者端处理更改的电子邮件地址,因为当使用 Discourse 作为 SSO 提供者时,这可能没有问题。

    我们有一个设置,出于奇怪的原因,我们有一个 Discourse 站点作为 SSO 提供者,而其他 Discourse 站点作为 SSO 客户端。可以在 Discourse SSO 提供程序中更改用户电子邮件,然后在下次登录时将这些更改同步到 SSO 客户端。

    我没有研究这种机制是如何工作的,但可能是通过 Discourse 为 SSO 目的添加到用户记录的“外部 ID”方案。在这样的全话语 SSO 系统中,您必须在电子邮件地址更改后检查下一次登录的有效负载,以了解究竟发生了什么,然后可以在您自己的实现中进行类似的操作。

    【讨论】:

      猜你喜欢
      • 2015-11-24
      • 1970-01-01
      • 2019-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多