#jabber协议中如何注册一个用户?
首先要与服务器建立一个连接, 在完成TLS握手之后就可以进行注册了,为什么不需要SASL握手呢?因为SASL握手只针对已经注册的用户在登陆服务器的时候使用.(修改密码和删除用户的时候需要SASL握手)
下面以openfire作为服务器,注册一个用户的过程如下:
(假设已经完成了TLS握手)
1. ( C->S )
<stream:stream
to='ziz-wrks-tfsxp1'
xmlns='jabber:client'
xmlns:stream='http://etherx.jabber.org/streams'
xml:lang='en'
version='1.0'>
TLS握手结束后, 发送新的'hello'消息
2. ( S->C )
<stream:stream
xmlns:stream='http://etherx.jabber.org/streams'
xmlns='jabber:client'
from='ziz-wrks-tfsxp1'
id='b691538a'
xml:lang='en' version='1.0'/>
Server回应Client的hello消息.
3. ( S->C )
<stream:features>
<mechanisms xmlns='urn:ietf:params:xml:ns:xmpp-sasl'>
<mechanism>DIGEST-MD5</mechanism>
<mechanism>PLAIN</mechanism>
<mechanism>ANONYMOUS</mechanism>
<mechanism>CRAM-MD5</mechanism>
</mechanisms>
<compression xmlns='http://jabber.org/features/compress'>
<method>zlib</method>
</compression>
<auth xmlns='http://jabber.org/features/iq-auth'/>
<register xmlns='http://jabber.org/features/iq-register'/>
</stream:features>
服务器支持的features(可以register)
4. ( C->S )
<iq type='get' id='uid1'>
<query xmlns='jabber:iq:register'/>
</iq>
客户端请求注册
5. ( S->C )
<iq type='result' id='uid1'>
<query xmlns='jabber:iq:register'>
<username/>
<password/>
<email/>
<name/>
<x xmlns='jabber:x:data' type='form'>
<title>XMPP Client Registration</title>
<instructions>Please provide the following information</instructions>
<field var='FORM_TYPE' type='hidden'>
<value>jabber:iq:register</value>
</field>
<field label='Username' var='username' type='text-single'>
<required/>
</field>
<field label='Full name' var='name' type='text-single'/>
<field label='Email' var='email' type='text-single'/>
<field label='Password' var='password' type='text-private'>
<required/>
</field>
</x>
</query>
</iq>
服务器返回注册需要的fields
(其中元素x里面的数据是扩展性的数据表但,暂时忽略)
6. ( C->S )
<iq id='uid2' type='set'>
<query xmlns='jabber:iq:register'>
<username>user3</username>
<password>user@123</password>
<name/>
<email/>
</query>
</iq>
用户提交注册信息.
7. ( S->C )
<iq type='result' id='uid2' to='ziz-wrks-tfsxp1/b691538a'/>
服务器返回注册结果
#如何更改用户密码
更改用户密码必须在完成与服务器的链接之后才能进行,也就是完成与服务器的TLS,SASl握手之后
再进行.
1. ( C->S )
<iq type='set' id='uid3'>
<query xmlns='jabber:iq:register'>
<username>user23</username>
<password>123456</password>
</query>
</iq>
发送更改密码的请求
2. ( S->C )
<iq type='result' id='uid3' to='user23@ziz-wrks-tfsxp1/2f21fd1f'/>
返回处理结果(操作成功)
#如何注销一个用户
注销一个用户必须在完成与服务器的链接之后才能进行,也就是完成与服务器的TLS,SASl握手之后
再进行.
1. ( C->S )
<iq type='set' id='uid3' from='testuser@ziz-wrks-tfsxp1/3a418274'>
<query xmlns='jabber:iq:register'><remove/></query>
</iq>
发送注销用户的请求
2. ( S->S )
<iq type='result' id='uid3' to='testuser@ziz-wrks-tfsxp1/3a418274'/>
返回处理结果(注销成功)
总结:
注册用户和更改或者注销用户的一个区别就是注册用户不需要经过SASL握手,而更改和注销用户需要.
也就是需要对用户身份进行验证.
分享到:
相关推荐
此中继安全配置文件被分配给指向Expressway C的新SIP中继,因为Expressway C已经配置为当Jabber用户通过MRA登录时向CUCM发送不安全的注册信息到5060端口。如果使用默认的中继安全配置文件,则通过MRA登录的Jabber...
本篇文章将详细探讨如何利用Delphi 11.3这一强大的开发工具,结合XMPP(Extensible Messaging and Presence Protocol)协议,构建一个跨平台的移动IM客户端。我们将以VKMessengerFMX为例,深入解析源码中的关键技术...
Java即时通讯系统是一种用于实现实时数据交换的应用程序,它基于Jabber协议,这是一个开放标准的即时消息和Presence协议。本项目实例“instance_message_system_for_java.rar”提供了一个使用Java实现的Jabber服务器...
Jabber实际上是一个使用XMPP协议的即时通讯应用,但XMPP不仅限于聊天,还可以用于各种在线状态检测和其他应用程序。 Openfire是基于GPL协议的Jabber服务器软件,非常受欢迎,因为它提供了易于安装和管理的界面。...
总的来说,Java Jabber 客户端是一个理想的开源项目,它为 Java 开发者提供了一个实践和学习即时通讯技术的平台,同时也为终端用户提供了一个轻便、可扩展的即时通讯解决方案。通过参与这样的项目,开发者不仅可以...
总的来说,JWChat 1.0 Beta 3是一款集成了Ajax技术和Jabber协议的即时通讯工具,具备了现代聊天应用的基本功能,并且能够灵活地适应ejabberd或Openfire服务器环境。对于想要搭建自定义即时通讯系统的用户,这是一个...
3. **Jabberd2服务器**:Jabberd2是Jabber服务器的一个实现,它是一个高性能、可扩展且模块化的服务器,支持多种协议,包括XMPP(Extensible Messaging and Presence Protocol),这是Jabber协议的现代版本。...
XMPP的核心是Jabber协议,通过TCP/IP连接进行数据传输,支持一对一、一对多以及多对多的聊天模式,具备丰富的扩展性,可以满足多种应用场景,如即时消息、文件传输、群聊等。 **Android平台上的XMPP应用开发** 在...
服务器负责处理多个客户端连接,网关用于不同协议之间的转换,而客户端则是用户界面,通过网络与服务器进行通信。 3. **通用架构**:XMPP的架构设计为分布式、去中心化,由多个服务器组成,允许跨服务器通信。每个...
在iOS平台上构建一个Jabber客户端涉及到的主要技术是XML流传输协议(Extensible Messaging and Presence Protocol,简称XMPP)。XMPP是一种基于XML的开放标准,主要用于即时通讯和在线状态感知,广泛应用于各种聊天...
Jabber-API 是一个专为JavaScript开发的库,它允许开发者在Web应用程序中实现即时通讯(Instant Messaging, IM)功能。基于XMPP(Extensible Messaging and Presence Protocol)协议,Jabber-API为开发者提供了与...
通过上述内容可以看出,XMPP协议是一个高度模块化、可扩展的消息和出席信息协议。它不仅支持即时消息传递,还能应用于出席信息管理、请求-响应服务等多个领域。随着技术的发展,XMPP将继续进化,为用户提供更高效、...
XMPP的设计目标是创建一个通用、可扩展的框架,使网络上的设备和应用能够通过交换结构化信息进行通信。 在绪论部分,文档介绍了XMPP的基本概念和背景,包括其与Jabber开源社区的关系以及后来成为IETF(互联网工程...
在实际开发中,使用JabberWookie可以快速实现Jabber协议的功能,如注册用户、发送和接收即时消息、管理联系人列表、建立多用户聊天室等。此外,由于Jabber协议支持扩展,通过JabberWookie也可以实现自定义的扩展功能...
1. 什么是Openfire:Openfire是一个开源的即时消息服务器,它基于XMPP协议,支持各种即时通讯客户端。 2. 为什么使用Openfire:Openfire易于配置、安装和维护,具有较好的性能,适合用于创建服务器端的即时通讯解决...
Openfire是一款开源的服务器软件,它基于XMPP(Extensible Messaging and Presence Protocol)协议,为实时通信提供了一个强大而灵活的平台。XMPP,原名为Jabber,是一种基于XML的即时通讯协议,广泛应用于各种聊天...
Jabberbeans是一个Java库,专为集成Jabber协议的开源项目设计。Jabber是一种基于XML的即时通讯(IM)协议,它允许开发者创建分布式、可扩展的即时通讯系统。Jabberbeans为Java开发者提供了一个方便的接口,以便在...
XMPP的框架由Jabber协议发展而来,如今已成为互联网工程任务组(IETF)的标准。 **服务器与客户端** 在XMPP系统中,服务器扮演着核心角色,处理用户注册、登录、消息路由等任务。例如,`androidpn-server-0.5.0`...