XEP0077.docx
- 文档编号:30156048
- 上传时间:2023-08-05
- 格式:DOCX
- 页数:38
- 大小:34.11KB
XEP0077.docx
《XEP0077.docx》由会员分享,可在线阅读,更多相关《XEP0077.docx(38页珍藏版)》请在冰豆网上搜索。
XEP0077
XEP-0077
出自Jabber/XMPP中文翻译计划
本文的英文原文来自XEP-0077
XEP-0077:
带内注册
本文定义了一个XMPP协议扩展用于基于XMPP的即时消息服务器和其他XMPP网络上的服务(例如群聊房间以及和非XMPP的IM服务之间的网关)的带内注册.本协议可以通过使用数据表单来扩展,这可以使得服务在注册过程中能够收集广泛的信息.本协议也支持带内变更密码和取消现有的注册.
注意此处定义的协议是XMPP标准基金会的最终标准,可作为稳定技术用于开发和部署。
文档信息
系列:
XEP
编号:
0077
发布者:
XMPP标准基金会
状态:
最终版
类型:
标准跟踪
版本:
2.2
最后更新日期:
2006-01-24
批准机构:
XMPP理事会
依赖于:
[[RFC3920|XMPPCore]
上文:
无
下文:
无
简称:
in-register
Schema:
//www.xmpp.org/schemas/iq-register.xsd> Wiki页: //wiki.jabber.org/index.php/In-BandRegistration(XEP-0077)> 作者信息 PeterSaint-Andre JID: [xmpp: stpeter@jabber.orgstpeter@jabber.org] URI: //stpeter.im/> 法律通告 版权 XMPP扩展协议的版权(1999-2008)归XMPP标准化基金会(XSF)所有. 权限 特此授权,费用全免,对任何获得本协议副本的人,对使用本协议没有限制,包括不限制在软件程序中实现本协议,不限制在网络服务中布署本协议,不限制拷贝,修改,合并,发行,翻译,分发,转授,或销售本协议的副本,被允许使用本协议做了以上工作的人士,应接受前述的版权声明和本许可通知并且必须包含在所有的副本或实质性部分的规格中.除非单独的许可,被重新分发的修改工作,不得含有关于作者,标题,编号,或出版者的规格的误导性资料,并不得宣称修改工作是由本文的作者,作者所属的任何组织或项目,或XMPP标准基金会签注。 免责声明 注意: 本协议是提供的“原样”的基础,没有担保或任何形式的条件,明示或暗示,包括,但不限于任何担保或关于名称,非侵权性,适销性或适合作某一特定目的的条件.在任何情况XMPP标准基金会或作者不对此协议承担任何责任索赔,损害赔偿,或其他责任,无论是在一项行动的合同,侵权,或否则,所产生的,运出,或在他涉嫌与规格或执行,部署或以其它方式使用本协议.## 责任限制 在任何情况下以及没有任何法律规定时,不论是侵权行为(包括疏忽),合同或其它方面,除非根据适用法律的要求(如蓄意和有严重疏忽行为)或同意以书面形式,XMPP标准基金会或任何作者不对本协议承担所造成的损失,包括任何直接,间接,特殊,偶发,或相应的损害赔偿的任何字符利用所产生的或不能使用的规格(包括但不限于善意的损失,停止作业,电脑失灵或故障,或任何和所有其他商业损害或损失),即使XMPP标准基金会或作者已被告知此类损害的可能性。 知识产权的一致性 XMPP扩展协议完全遵守XSF的知识产权策略(可在 //www.xmpp.org/extensions/ipr-policy.shtml>找到副本或写信给XSF,P.O.Box1641,Denver,CO80201USA). 讨论地点 首选的讨论的地方是标准讨论邮件列表: //mail.jabber.org/mailman/listinfo/standards>. 勘误表发送到editor@xmpp.org XMPP相关信息 XMPP是由XSF(XMPP标准化基金会)按互联网标准程序贡献的,和IETF的RFC2026兼容的规范,包括XMPP核心(RFC3920)和XMPPIM(RFC3921).在本文中定义的任何协议,都是在互联网标准程序之外开发的,是扩展XMPP,而不是改变、发展和修改XMPP本身。 一致性术语' 本文中以下关键词的含义如RFC2119所述: "MUST","SHALL","REQUIRED";"MUSTNOT","SHALLNOT";"SHOULD","RECOMMENDED";"SHOULDNOT","NOTRECOMMENDED";"MAY","OPTIONAL". 目录 [隐藏] ∙1绪论 ∙2要求 ∙3用例 o3.1实体注册到一个主机 ▪3.1.1注册到一个服务器 o3.2实体取消现存注册 o3.3用户变更密码 ∙4扩展性 ∙5重定向 ∙6优先次序 ∙7Key元素 ∙8流特性 ∙9安全事项 ∙10IANA事项 ∙11XMPP注册事项 o11.1协议名字空间 o11.2流特性 o11.3URI查询类型 ▪11.3.1register ▪11.3.2unregister o11.4字段标准化 ▪11.4.1注册 ▪11.4.2注销 ▪11.4.3变更密码 ∙12XMLSchemas o12.1jabber: iq: register o12.2StreamFeature ∙13备注 ∙14修订历史 绪论 Jabber协议很早就包含了一个从即时消息服务器和相关服务进行带内注册的方法.这个方法使用'jabber: iq: register'名字空间并且被广泛记载于Internet-Drafts和其他地方.因为带内注册不是RFC2779\[1\]必需的,'jabber: iq: register'名字空间的文档从XMPPIM\[2\]移除了.本协议填补了这部分文件的空白. 要求 带内注册必须使一个实体能够向一个主机注册,从一个主机取消现有的注册,或从一个主机变更密码.这里"host"的含义如下: 1.一个即时消息服务器,如[XMPPIM|XMPP文档列表/XMPP正式RFC标准/RFC3921]中所描述并且在ServiceDiscovery\[3\]中的category+type标识为"server/im" 2.一个附加的服务,例如一个网关(见GatewayInteraction\[4\])或一个多用户聊天\[5\]服务 如果必要,关于信息收集的扩展性应该使用数据表单\[6\]. 用例 实体注册到一个主机 为了向一个主机注册需要哪些字段,一个实体应该(SHOULD)首先发送一个IQget给主机.这个实体不应该(SHOULDNOT)通过先发送一个IQset来尝试猜测需要的字段,因为需要的数据的性质是由服务决定的. 例子1.实体从主机请求注册字段 iq: register'/> 如果实体未曾注册并且主机支持带内注册,主机必须(MUST)通知实体需要的注册字段.如果主机不支持带内注册,它必须(MUST)返回一个 例子2.主机返回注册字段给实体 iq: register'> Chooseausernameandpasswordforusewiththisservice. Pleasealsoprovideyouremailaddress. 如果主机确定(基于'from'地址)该实体已经注册,它给该IQget返回的应答IQresult中必须(MUST)包含一个空的 如果该主机是一个即时消息服务器,在这个阶段它应该(SHOULD)假设请求的实体是为注册的,除非实体已经被验证(详见下文中的注册到一个服务器章节). 例子3.主机通知实体当前的注册 iq: register'> 如果实体不存在,该实体应该(SHOULD)提供必需的信息. 例子4.实体提供必需信息 iq: register'> 注意: 请求的实体必须(MUST)提供包含在IQresult中的所有的元素信息(不只是 例子5.主机通知实体注册成功 替代的,注册可能失败.可能的失败包括用户名冲突(期待的用户名已经被另一个实体使用)以及请求的实体未能提供完全的必需信息. 例子6.主机通知实体注册失败(用户名冲突) iq: register'> ietf: params: xml: ns: xmpp-stanzas'/> 如果请求的实体在注册\[7\]时未提供所有的请求信息那么服务器或者服务必须(MUST)返回一个 例子7.主机通知实体注册失败(一些必需的信息未提供) iq: register'> ietf: params: xml: ns: xmpp-stanzas'/> 如果主机需要超出以上的以及超过schema定义的数据元素的额外信息,它应该(SHOULD)使用本文的扩展性章节里描述的数据表单. 例子8.实体向主机请求注册字段 from='juliet@ to='contests.shakespeare.lit' id='reg3'> iq: register'/> 例子9.主机返回注册表单给实体 from='contests.shakespeare.lit' to='juliet@ id='reg3'> iq: register'> Usetheenclosedformtoregister.IfyourJabberclientdoesnot supportDataForms,visithttp: //www.shakespeare.lit/contests.php x: data'type='form'> Pleaseprovidethefollowinginformation tosignupforourspecialcontests! iq: register 然后用户应该(SHOULD)返回表单: 例子10.用户提交注册表单 from='juliet@ to='contests.shakespeare.lit' id='reg4'> iq: register'> x: data'type='submit'> iq: register 注册到一个服务器 一个未注册的实体和一个服务器而不是一个服务的交互必需特别注意.通常,一个服务器允许带内注册以使实体能够在Jabber网络里面"bootstrap"参与;在一个未注册以及未验证的事向一个服务器打开一个TCP连接并立刻完成该服务器的注册用例的时候这个bootstrapping发生了,然后使用这个全新注册的标识进行严正.如上所述,当一个服务器收到一个IQ-get用于注册信息,它应该(SHOULD)假设请求实体是未注册的除非该实体已经验证. 依赖于本地服务的供应,如果一个未注册的实体在验证之前尝试注册太多次数,或者一个实体成功完成注册用例之后尝试注册第二个身份,那么一个服务器可以(MAY)返回一个 实体取消现存注册 'jabber: iq: register'名字空间允许一个实体也能够从一个主机取消一个注册,通过发送一个包含 例子11.实体请求注销现存注册 iq: register'> 例子12.主机通知实体成功注销 有两种情形: 1.如果实体从他的"home"服务器取消注册(也就是说,维护它的XMPP帐号的服务器),那么该实体不应该(SHOULDNOT)包含一个'from'或'to'地址在移除请求中,该服务器应该(SHOULD)返回一个 2.如果从一个服务而不是它的宿主服务器取消注册,它的宿主服务器必须(MUST)贴一个'from'地址到移除请求中,这个遵循XMPPCore的地址应为该实体的全JID( 如下所述,各种错误可能发生. 表1: 注销出错例子 条件 描述 发送者没有足够的权限取消注册. 没有发送者被允许在带内取消注册. 发送移除请求的实体未曾注册. 主机是一个即时消息服务器而IQget不包含一个'from'地址,因为该实体不是注册到该服务器. 例子13.主机通知客户端注销失败(错误的请求) ietf: params: xml: ns: xmpp-stanzas'/> 例子14.主机通知客户端注销失败(禁止) ietf: params: xml: ns: xmpp-stanzas'/> 例子15.主机通知客户端注销失败(不允许) ietf: params: xml: ns: xmpp-stanzas'/> 一个给定的部署可以(MAY)选择在取消注册之前要求额外的信息(例如旧密码或以前收集的个人信息).为了做到这一点,服务器或服务应该(SHOULD)在错误节里面返回一个数据表单: 例子.服务器在错误信息中返回注销表单 iq: register'> x: data'type='form'> iq: register: cancel
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- XEP0077