JEP-0078

JEP-0078: Non-SASL Authentication
 
SASL Simple 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
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值