带有 eppn 的 REST-API users.list

问题描述

由于我们与 Rocket.Chat 有一些集成,我们确实使用 API 来创建、查询订阅系统用户到 Rocket.Chat。 我们使用 SAML 身份验证并使用 eppn 参数。

以前在与 eppn 的火箭聊天中搜索用户很容易,因为您可以使用 API users.list 查询 eppn。

api/v1/users.list?query={"eppn":"eppn-of-user"}

我把Rocket.Chat升级到3.9版本后,发现用users.list API查询不到eppn。

User 的结构已更改,现在 eppn 参数是 services.saml 的子项。 我可以这样查询 MongoDB 中的 eppn:

coll.find({'services.saml.eppn': "user-eepn"})

但是无法通过 API 查询 eppn:

api/v1/users.list?query={'services.saml.eppn': "user-eppn"}

{
  "success": false,"error": "Invalid query parameter provided: \"{'services.saml.eppn': \"user-eppn\"}\" [error-invalid-query]","errorType": "error-invalid-query","details": {
    "helperMethod": "parseJsonQuery" 
  }
}

有人知道吗?

谢谢!

解决方法

所以大家,我刚刚得到了我的问题的解决方案,如果有人会遇到同样的问题。

首先对于 EJSON 解析函数,查询必须这样写:

api/v1/users.list?query={"services.saml.eppn": "user-eppn"}

但第二个问题是 Rocket.Chat 不允许查询 services 参数。 是权限问题,所以要先查询services参数再查询eppn参数,必须给User权限。