贏在執(zhí)行

          這個世界上只有兩樣?xùn)|西愈分享愈多,那就是智慧與愛。

          BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
            17 Posts :: 11 Stories :: 13 Comments :: 0 Trackbacks

          常用鏈接

          留言簿(1)

          隨筆分類(9)

          隨筆檔案(17)

          文章分類(11)

          文章檔案(11)

          AJAX專區(qū)

          JAVA專區(qū)

          LINUX專區(qū)

          XMPP專區(qū)

          YAHOO-Ext專區(qū)

          其他方面

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          XMPP 協(xié)議

          XMPP 協(xié)議是在www.jabber.org上公布的,是一種標(biāo)準(zhǔn)的即時通訊協(xié)議
          JEP-0078: Non-SASL Authentication
          ?
          SASLSimple Authentication and Security Layer 簡單的認(rèn)證及加密層
          ?

          1、客戶端向服務(wù)器端發(fā)送XML
          <stream:stream to='shakespeare.lit'
          ???? xmlns='jabber:client'
          ?????????????? xmlns:stream='http://etherx.jabber.org/streams'>
          ?
          ?

          2、服務(wù)器返回消息
          <iq type='get' to='shakespeare.lit' id='auth1'>
          ?<query xmlns='jabber:iq:auth'/>
          </iq>
          注意中間的ID,這個ID是服務(wù)器端返回給客戶端的驗證信息,驗證信息一般是以該ID+用戶密碼通過SHA1(RFC3174)算法進(jìn)行操作的。也就是說客戶端得到該ID和密碼經(jīng)過SHA1算法加密后返回給服務(wù)器。
          ?
          ?

          3、客戶端想服務(wù)器提交請求獲取登錄需要驗證的字段
          <iq type='get' to='shakespeare.lit' id='auth1'>
          ?<query xmlns='jabber:iq:auth'/>
          </iq>
          ?
          ?

          4、服務(wù)器返回登錄需要驗證的字段
          <iq type='result' id='auth1'>
          ?<query xmlns='jabber:iq:auth'>
          ??? <username/>
          ??? <password/>
          ??? <digest/>?這個digest就是上面經(jīng)過SHA1算法得出的結(jié)果字段
          ??? <resource/>
          ?</query>
          </iq>
          如果客戶端發(fā)送的字段包括了用戶名和IQ-GET的字段,服務(wù)器不應(yīng)該返回錯誤消息(因為需要服務(wù)器判斷當(dāng)前用戶名是否在使用),如果服務(wù)器不支持可插入的簡單認(rèn)證及密碼模塊,那么必須返回一個<service-unavailable/>的錯誤;如果客戶端企圖使用SASL認(rèn)證但是失敗,服務(wù)器必須返回<policy-violation/>錯誤信息
          在認(rèn)證過程中,jabber:iq:auth命名、用戶名和資源是必須要求客戶端提供的而服務(wù)器返回的XML流中也必須提供<username/><resource/>2個元素。
          ?
          ?

          5、客戶端提交字段內(nèi)容進(jìn)行驗證
          文本格式,非加密模式
          <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、登錄結(jié)果
          成功
          <iq type='result' id='auth2'/>
          失敗認(rèn)證失敗,可能是用戶名密碼不匹配或數(shù)字驗證錯誤
          <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
          posted on 2006-12-31 12:54 飛雪(leo) 閱讀(3095) 評論(0)  編輯  收藏 所屬分類: XMPP專區(qū)

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 曲周县| 调兵山市| 四子王旗| 南漳县| 南投市| 阿勒泰市| 清涧县| 临安市| 眉山市| 交城县| 宜兴市| 望城县| 淳安县| 舒兰市| 浑源县| 永德县| 南开区| 易门县| 峨眉山市| 星子县| 巴林右旗| 青川县| 漳州市| 宜兰县| 远安县| 临沂市| 屏边| 甘南县| 电白县| 和田市| 长子县| 宣城市| 东方市| 孟连| 合肥市| 蓝山县| 临高县| 纳雍县| 龙州县| 清丰县| 资源县|