xmpp(jabber) 协议中发送者的标识
Posted
技术标签:
【中文标题】xmpp(jabber) 协议中发送者的标识【英文标题】:Identification of the sender in xmpp(jabber) protocol 【发布时间】:2010-12-07 18:47:02 【问题描述】:我不明白如何确定通过 jabber 协议发送的消息的发件人。如果我收到消息,则 xml 看起来像这样:
<message from="sharok1989@qip.ru/QIP" to="sharok89@gmail.com/Talk.v10576F328E0" stime="1291746351249" xml:lang="ru" type="chat" id="qip_45">
<body>Hi. I'm fine.</body>
<active xmlns="http://jabber.org/protocol/chatstates"/>
</message>
有 from 和 to 属性。 如果我发送消息,则 xml 看起来像这样:
<message to="sharok1989@qip.ru" type="chat" id="42">
<body>Hello. How are you?</body>
<active xmlns="http://jabber.org/protocol/chatstates"/>
</message>
没有来自的属性。客户如何知道谁给他发了消息?
对不起我的英语。谢谢。
【问题讨论】:
【参考方案1】:XMPP 服务器需要验证“发件人”属性(如果指定)(以验证发送者没有尝试模拟另一个客户端),或者添加“发件人”属性(如果未指定)。通常,您可以省略“来自”并假设服务器将根据客户端连接的 JID 附加一个。
请参阅RFC 3920(链接到“XML 节”部分)了解具体规则。
【讨论】:
那我需要捕获授权过程并保存JID和IP地址?我理解正确吗? @user348173 - 您要从发件人那里寻找什么“身份证明”? JID 本身就是 XMPP 中的标识... 跟踪您自己的 JID 有几个原因,其中最重要的是,您可以知道哪些状态通知来自您自己的连接,因此您可以忽略它们。使用该 JID 作为发件人地址并不是一个好的理由。正如格雷格所说,你应该(几乎)总是忽略发件人地址。你的服务器会做正确的事,这样当你的联系人收到消息时,发件人地址就会被正确设置。以上是关于xmpp(jabber) 协议中发送者的标识的主要内容,如果未能解决你的问题,请参考以下文章
允许 ejabberd_service(Jabber 组件协议)修改用户名册