将IM聊天服务器集成到现有的Spring服务器

我试图将openFire XMPP服务器集成到我当前的公司Spring服务器,但有两个主要问题我找不到答案 -

我将首先从我目前的架构开始 -
1. xmpp服务器有一个自己的DB服务器,它是从Spring服务器DB中分离出来的,这是一个专用的机器来保存用户的字符历史记录等
2.弹簧服务器有一个自己的数据库,用于保存用户凭据(md5加密)以及客户端应用程序数据
3. Spring服务器专门用于服务HTTP请求(一个专用的REST服务器)

总而言之,我有两台DB服务器,一台是聊天服务器,一台是Rest服务器

现在针对这些问题 -
1.我可以禁止注册到xmpp服务器(例如,将其他服务器ip白名单,并让它成为用户注册后唯一可以创建用户的人)?
2.出于安全原因,Rest服务器每隔2天为登录用户切换会话,iOS和Android客户端在本地处理会话管理 - 如何将这些会话用于XMPP服务器?
澄清 - 我希望用户能够使用xmpp服务器仅用于聊天目的,但只有在用户会话可能过期后才登录到应用程序本身,聊天客户端还必须对REST服务器重新进行身份验证,我可以做到这一点吗?
3.它不会在REST服务器上造成过载吗? (即Rest服务器现在必须处理客户端请求以及XMPP服务器请求)
4.实现这种系统的最佳体系结构(聊天服务器,聊天服务器,休息服务器,休息服务器的数据库服务器),以便系统可以水平扩展?

我在谷歌搜索一篇文章或一些相关的描述一般架构,但无法找到任何相关的,因为我不是“发明轮子”在这里我很想听到一个好建议或被引导到一篇文章,解释怎么对的

提前致谢。


XMPP世界中用于用户认证的标准方式是SASL。

SASL有一个非常简单的模型:服务器向客户端发送一些“挑战”字符串给客户端,客户端向服务器发送“响应”字符串,并且直到服务器决定客户端发送所有需要的数据为止。 在SASL“机制”中定义了要发送的数据。 有许多着名的SASL机制,例如SCRAM,它们由大多数XMPP服务器和客户端“开箱即用”提供。

您的问题是 - 您已经拥有身份验证系统和用户数据库,并且希望将其用于聊天目的。 有两种方法:

  • 将您的自定义REST身份验证添加为SASL模块到您的服务器。 谷歌表示已经可以编写和添加Openfire SASL插件。 您的SASL REST机制与浏览器的功能相同,但所需的URL,令牌等将被封装为“挑战”和“响应”,例如,服务器会将REST身份验证网址发送为客户端的“挑战”,客户端将打开网址,发布凭证,获取令牌并将它们作为“回复”发送回服务器。 当然你也需要在客户端添加这个SASL REST机制。
  • 直接使用您的XMPP服务器来使用您的身份验证数据库。 在这种情况下,您只需修改Openfire代码以将其链接到您的用户/密码表(也许已有一个管理工具)。 在这种情况下,客户端将继续使用标准SASL机制而无需修改。 当这种方式比第一种方式更容易时,请记住您的XMPP服务器应该可以访问纯文本密码,这可能是不安全的。
  • 您按顺序提问:

  • 是的,您可以禁用XMPP客户端的注册并将用户指向注册网站。

  • 您将在Openfire管理控制台中看到聊天会话,并可以阻止它们,也可以按照您的日程安排为此编写一个模块

  • 如果您要编写SASL REST机制,那么来自REST后端的聊天客户端和Web客户端的请求之间没有任何区别,它们看起来是一样的。

  • 正如我先介绍的那样,您不需要为聊天服务器分开数据库,并且可以设置连接到您的REST后端的多个聊天服务器。

  • 链接地址: http://www.djcxy.com/p/61299.html

    上一篇: Integrate an IM chat server to existing Spring server

    下一篇: Sockets, xmpp and polling to node.js