我们有QuickBlox的企业安装(implements XMPP),并希望在我们的QuickBlox服务器安装上为所有用户创建镜像帐户。我们还希望同步我们系统用户使用我们系统上构建的关系(例如,"客户端和提供商")创建的 networks 。
简而言之,我们希望导出限制聊天的白名单"对手"仅限与我们的每个用户已拥有关系的用户。如果User1在我们的系统中与User2和User3存在关系,但不 User4到User40,我们希望能够通过QuickBlox API创建白名单,使用QuickBlox API在聊天中强制执行。
编辑:我们无法使用"荣誉系统"白名单。也就是说,强制执行必须是服务器端使用客户端无法规避的方法。用户之间必须存在严重的,不可避免的阻止隐私问题。
使用案例
QuickBlox(或XMPP)服务器具有User1到User40,包括在内。
用户1的白名单仅由[User2,User3]组成。
如果User1尝试联系User15,我们希望QuickBlox / XMPP注意到User15不在User1的白名单上并阻止该通信,就像User1双向阻止该用户一样。
我在QB的文档中找到了引用XMPP规范文档的地方,并且找到了隐私列表的概念,它们似乎以 black 列表的形式运行:
这些只提供two styles of blacklist privacy:
您可以选择一种被阻止的逻辑(隐私列表)。有2个 类型:
- 以某种方式阻挡。您已被阻止,但您可以写信给 阻止用户。
- 阻挡两种方式。你被封锁了,你也无法做到 写信给被阻止的用户。
我还发现了有关服务器白名单的文档,这些文档似乎是在对话框/ jid上运行,而不是用户级别:
添加到白名单的实体可以是RFC 6120中指定的任何格式的JID ......白名单可能会阻止入站通信,出站通信或两者兼有......
还有一些名单,这些名单与白名单很接近,但在我的测试中似乎并不限制任何两个可能不在彼此名单上的用户之间的通信。
也就是说,我还没有在我的测试应用程序中设置一个名单,用户可以创建组和一对一的聊天对话框,尽管没有明确接受 any < / em>名册请求。在Android文档中,我在名单上发现了以下内容:&#34; [名单]是一个人收到在线状态更新的用户集合。&#34;
,我不会在出现警报之外以任何方式阻止是否有建议的方法为每个用户创建一个悲观的白名单,其中只包含允许与之通信的用户?或者我们是否被迫创建和维护反向黑名单&#34;,我们为每个新用户自动创建隐私列表 阻止每个其他用户使用API删除每个用户应该能够与之通信的API?
如果我们必须使用&#34;逆黑名单&#34;,是否有办法让默认黑名单适用于最初阻止与我们的QuickBlox系统中已有的每个其他用户进行通信的每个新用户?
(同样,我们无法使用&#34;荣誉系统&#34;列表。如果客户端必须先申请白名单才能使用,可以freely discover和{{3有效的白名单,或者如果客户可以then change,那就不够安全。)
答案 0 :(得分:3)
XMPP客户端
XMPP客户端需要一种方法来询问其他客户端是否支持通过中继接收推送。由于推送可以从任何地方发送,客户端也可以通过中继直接向其他客户端发送推送,只要他们有朋友的白名单令牌。如果客户端发送的邮件不支持直接推送,他们还需要响应XMPP服务器对白名单令牌的查询,以允许服务器发送推送。
XMPP服务器
XMPP服务器可以询问其连接的客户端是否支持推送中继,如果是,则在客户端脱机时将它们收到的消息转发到推送中继服务器。这将要求XMPP服务器也从用户那里获得白名单令牌。
帮助:查看此link
答案 1 :(得分:1)
如果我们谈论XMPP协议 - 有能力阻止来自/到(see example 48)的任何通信
因此,默认情况下,您可以为每个用户设置它。例如。
然后,如果我们需要允许与特定的人沟通, 然后,您可以使用 action = allow 将此用户添加到您的隐私列表中,并将订单大于“完整阻止”。这实际上是通过隐私列表see example 8:
实施白名单的一个很好的例子和(3)'special',只允许三个人通信 特定实体。