pnoeric
(Eric)
1
你好,我正在将 Discourse 与一个社区网站集成,该网站的成员已经可以互相“屏蔽”。因此,当我的网站成员通过 SSO 登录 Discourse 时,我希望同时传递被屏蔽的外部 ID(external_id)列表。我想这些 ID 可以直接放在 Discourse 端的“静音用户”字段中……
所以问题是:在 SSO 发生时,我能否传递一个要“静音”的用户列表?看起来 SSO 期间可传递的用户元数据列表是有限的,但我没看到“静音用户”是其中的选项之一。
如果不能,那么为了实现这一功能,我似乎需要设置一个 webhook,当从 webhook 收到 user_logged_in 事件时,我就可以使用 Discourse API 来传递静音用户列表……是这样吗?(如果是的话:该 API 调用在哪里?我找不到!)
谢谢!!
sam
(Sam Saffron)
2
是的,这听起来与其他扩展已有的单点登录(SSO)功能有些类似。由于这种情况比较罕见,我还在犹豫是否要将此功能纳入协议中。
Webhook 可以正常工作:你将在登录时收到回调,然后可以再次调用 Discourse 的 API 来同步列表。
pnoeric
(Eric)
3
嗨,Sam,是的,对于我当前的具体问题,我只需响应 user_logged_in webhook 事件——这没问题。谢谢你的建议。
我理解你关于 SSO 可以传递哪些内容的观点。随着我继续将 Discourse 与我的网站深度集成,我也越来越了解你们是如何实现 SSO 的。目前它运行良好,但我认为将所有的“SSO 覆盖……”复选框合并为一个通用的复选框会很有趣,例如“SSO 管理所有用户属性”(或类似表述)。
想法是:如果我启用这个全局 SSO 复选框,唯一需要保持一致的只有 external_id:向 Discourse 保证该 ID 始终唯一、始终标识同一用户且永不更改。一旦这一点确立,我就可以在 SSO 请求中传递所有我需要的字段,并完全从我的数据库中加载用户信息。