问题描述
由于我们与 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权限。