我试图将openFire XMPP服务器集成到我当前的公司Spring服务器,但有两个主要问题我无法找到答案 -
我先从现有的架构开始 -
1. xmpp服务器有一个自己的数据库服务器,它与Spring服务器数据库分开,这是一个专用机器,用于保存用户的历史记录等。
2. Spring服务器有一个自己的DB,它保存用户凭据(md5加密)以及客户端应用程序数据
3. spring服务器专用于提供HTTP请求(专用REST服务器)
总而言之,我有一个聊天服务器和一个休息服务器的数据库服务器
现在提出问题 -
1.我是否可以禁止向xmpp服务器注册(即将其余服务器ip列入白名单,让其成为用户注册后唯一可以创建用户的人)?
2.出于安全原因,Rest服务器每2天为登录用户切换会话,iOS和Android客户端在本地处理会话管理 - 如何将这些会话与XMPP服务器一起使用?
澄清一下 - 我希望用户能够仅将xmpp服务器用于聊天目的,但只有在他们登录到应用程序本身之后,因为用户会话可能会过期,聊天客户端也必须重新对REST服务器进行身份验证,如何我可以做到这一点吗?
3.它不会在REST服务器上创建过载吗? (即Rest服务器现在必须处理客户端请求以及XMPP服务器请求)
4.实现这种系统的最佳架构是什么(聊天服务器,聊天服务器的数据库服务器,休息服务器,休息服务器的数据库服务器),以便系统可以水平扩展?
我搜索谷歌搜索一篇文章或与描述一般建筑相关的东西但却找不到任何相关内容,因为我没有"进入轮子"在这里,我很乐意听到一个好的建议或被引导到一篇解释方法的文章
提前致谢。
答案 0 :(得分:1)
XMPP世界中用于用户身份验证的标准方式是SASL。
SASL有一个非常简单的模型:服务器向客户端发送一些“质询”字符串给客户端,客户端向服务器发送“响应”字符串,然后重复此操作直到服务器决定客户端发送所有必需的数据。在SASL“机制”中定义要发送的数据。有许多众所周知的SASL机制,例如SCRAM,它们由大多数XMPP服务器和客户端提供“开箱即用”。
您的问题是 - 您已经拥有身份验证系统和用户数据库,并希望将其重新用于聊天目的。有两种方法:
您按顺序提问:
是的,您可以禁用XMPP客户端的注册并将用户指向注册网站。
您将在Openfire管理控制台中看到聊天会话并能够停止它们,您也可以编写一个模块来按计划执行此操作
如果您要编写SASL REST机制,聊天客户端和Web客户端对REST后端的请求之间没有任何区别,它们看起来会一样。
正如我先描述的那样,您不需要单独的聊天服务器数据库,并且您可以设置连接到REST后端的多个聊天服务器。