JEP-0078

原创 2006年06月05日 15:28:00
JEP-0078: Non-SASL Authentication
 
SASLSimple Authentication and Security Layer 简单的认证及加密层
 

1、客户端向服务器端发送XML
<stream:stream to='shakespeare.lit'
     xmlns='jabber:client'
               xmlns:stream='http://etherx.jabber.org/streams'>

 
 

2、服务器返回消息
<iq type='get' to='shakespeare.lit' id='auth1'>
 <query xmlns='jabber:iq:auth'/>
</iq>
注意中间的ID,这个ID是服务器端返回给客户端的验证信息,验证信息一般是以该ID+用户密码通过SHA1(RFC3174)算法进行操作的。也就是说客户端得到该ID和密码经过SHA1算法加密后返回给服务器。

 
 

3、客户端想服务器提交请求获取登录需要验证的字段
<iq type='get' to='shakespeare.lit' id='auth1'>
 <query xmlns='jabber:iq:auth'/>
</iq>

 
 

4、服务器返回登录需要验证的字段
<iq type='result' id='auth1'>
 <query xmlns='jabber:iq:auth'>
    <username/>
    <password/>
    <digest/> 这个digest就是上面经过SHA1算法得出的结果字段
    <resource/>
 </query>
</iq>
如果客户端发送的字段包括了用户名和IQ-GET的字段,服务器不应该返回错误消息(因为需要服务器判断当前用户名是否在使用),如果服务器不支持可插入的简单认证及密码模块,那么必须返回一个<service-unavailable/>的错误;如果客户端企图使用SASL认证但是失败,服务器必须返回<policy-violation/>错误信息
在认证过程中,jabber:iq:auth命名、用户名和资源是必须要求客户端提供的而服务器返回的XML流中也必须提供<username/><resource/>2个元素。

 
 

5、客户端提交字段内容进行验证
文本格式,非加密模式
<iq type='set' id='auth2'>
 <query xmlns='jabber:iq:auth'>
    <username>bill</username>
    <password>Calli0pe</password>
    <resource>globe</resource>
 </query>
</iq>
加密模式
<iq type='set' id='auth2'>
 <query xmlns='jabber:iq:auth'>
    <username>bill</username>
    <digest>48fc78be9ec8f86d8ce1c39c320c97c21d62334d</digest>
    <resource>globe</resource>
 </query>
</iq>

 

6、登录结果
成功
<iq type='result' id='auth2'/>
失败认证失败,可能是用户名密码不匹配或数字验证错误
<iq type='error' id='auth2'>
 <error code='401' type='auth'>
    <not-authorized xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/>
 </error>
</iq>
失败资源冲突/错误
<iq type='error' id='auth2'>
 <error code='409' type='cancel'>
    <conflict xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/>
 </error>
</iq>
失败没有提供需要验证的字段
<iq type='error' id='auth2'>
 <error code='406' type='modify'>
    <not-acceptable xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/>
 </error>
</iq>
 
 

 
其他的就没什么重要的了,JEP-0078就到此了吧,剩余的重要工作就是如何配置SASL

相关文章推荐

swust oj代码+解析_1165,0284,0074,0042,1171,0026,0189,0078,0046,0077,0209,0129

swust oj 1165,0284(int a[n]\数字根),0074,0042,1171(矩阵相乘 输出对齐),0026/0189,0078(计算生日是星期几),0046,0077(计算员工周工...

新JEP将简化Java类型变异

新的JEP Candidate 旨在简化处理Java中复杂的类型变异的概念。这个新的JEP Candidate可能会在Java 10中推出,提供了在定义的泛型类型中指定目标对象默认变异的方法,而不是在...
  • hj7jay
  • hj7jay
  • 2017年02月08日 09:20
  • 194

Jep解析字符串数学公式

如果是一般公式,使用Jep很容易实现计算得到结果。 [java] view plain copy print? String str = "6+7+8-9";  Je...

微信上传图文消息素材报错:{ errcode: 40007, errmsg: 'invalid media_id hint: [klcWoA0078ure1]' }

微信上传图文消息报错:{ errcode: 40007, errmsg: 'invalid media_id hint: [klcWoA0078ure1]' }...

sqlserver2005内部函数,存储过程,以及数据库角色 转自http://hi.baidu.com/%B2%A8%C1%D5/blog/item/e5de0254606e1455574e0078

-------------------------------------------------------------------------- /*日期函数*/ DATEADD ( date...

jep-3.2.0-trial.zip

  • 2008年08月25日 10:52
  • 1.7MB
  • 下载

新JEP将简化Java类型变异

新的JEP Candidate旨在简化处理Java中复杂的类型变异的概念。这个新的JEP Candidate可能会在Java 10中推出,提供了在定义的泛型类型中指定目标对象默认变异的方法,而不是在泛...

jep-3.1.0-trial.zip

  • 2008年12月22日 10:55
  • 1.52MB
  • 下载

一种基于 JEP 和可配置公式实现用户自定义字段的解决方案

背景 随着 IT 技术的普及和发展,用户的信息化水平越来越高,软件产品除了满足用户的基本需求之外,还必须越来越照顾到用户的个性化需求,为用户提供深层次的个性化服务。以一个包含报表展示功能的产品为例,...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JEP-0078
举报原因:
原因补充:

(最多只允许输入30个字)