创建插件通过SAML的uid注销用户

我使用 SAML 组将用户认证到不同的类别。当组发生更改时,用户需要重新登录。我想在我的 IDP 中自动化此操作。当组发生更改时,它会使用 API 登出用户

curl -X POST “https://mydiscourse.org/admin/users//log_out.json”   -H “Content-Type: application/json”   -H “Api-Key: XXXX”   -H “Api-Username: Admin” -v

仅使用具有登出权限的 API 令牌,就可以非常安全地完成此操作。

但是 IDP 没有用户的数字 ID。它只有一个唯一的编号。

我已经在控制台中找到了如何登出用户,输入应用程序和 rails c

uaa = UserAssociatedAccount.find_by(provider_name: “saml”, provider_uid: “123456”)
user = uaa.user
user.user_auth_tokens.destroy_all

所以我的想法是创建一个自定义端点,使用类似的方法

curl -X POST https://mydiscourse.org/custom/saml-logout/123456   -H “Api-Key: xxx”   -H “Api-Username: Admin” -H “Accept: application/json”

这要么将收到的 auth_token 转发到官方 API,这可能是最安全的方法。ID 可以通过 user.id 获取(参见上面的 rest)。

或者执行

uaa = UserAssociatedAccount.find_by(provider_name: “saml”, provider_uid: “123456”)
user = uaa.user
user.user_auth_tokens.destroy_all

是否有简单的插件可以将这段非常小的代码粘贴进去?我不是 Ruby 程序员,但这只有几行代码。这应该可以在几分钟内完成。

非常感谢您的帮助。