青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

面對(duì)現(xiàn)實(shí),超越自己
逆水行舟,不進(jìn)則退
posts - 269,comments - 32,trackbacks - 0

引文:

調(diào)試GLOOX 1.0.10的注冊(cè)功能頗費(fèi)了一些功夫。總體邏輯如GLOOX自帶的例子一樣是毫無疑問的,但是照搬例子又是不能完成注冊(cè)的,返回錯(cuò)誤碼為4------RegistrationBadRequest筆者一開始在網(wǎng)上狂搜解決方案,資料少之又少,有建議重寫Client::handleNormalNode函數(shù)(目的是禁止SASL認(rèn)證)的,有直接繼承Client重寫Client::handleNormalNode函數(shù)的,但都沒說到點(diǎn)子上。經(jīng)過一段時(shí)間的研究,在GLOOX的maillist上得到啟發(fā),順利完成注冊(cè)?,F(xiàn)將解決方案記錄下來:


環(huán)境

客戶端:GLOOX1.0.1.0 VS2008

服務(wù)器:OPENFIRE 默認(rèn)安裝


對(duì)于GLOOX自帶的注冊(cè)例子不能正常注冊(cè)的問題有人在郵件列表里提出來。一個(gè)哥們這樣回答:

Ok, I've found what the problem was 
In openFire server parameters, Anonymous Login => Disabled !!! 

意思是要禁用openFire服務(wù)器里的選項(xiàng)”注冊(cè)和登錄“的”匿名登錄“項(xiàng)。

筆者按此說明禁用該選項(xiàng),果然注冊(cè)成功。

這說明開始的注冊(cè)失敗是和匿名登錄有關(guān)系的。我們來看一下引用registration_expmple例子登錄失敗時(shí)的XML流:

S->C:服務(wù)器返回給客戶端支持的認(rèn)證機(jī)制:

<stream:features xmlns:stream='http://etherx.jabber.org/streams'><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> 

 

從上面XML流中我們可以看到,默認(rèn)openFire支持四種認(rèn)證機(jī)制,分別是:DIGEST-MD5、PLAIN、ANONYMOUS、CRAM-MD5。然后我們看GLOOX客戶端的響應(yīng)流:

C->S:客戶端返回選擇的認(rèn)證方式:

<auth xmlns='urn:ietf:params:xml:ns:xmpp-sasl' mechanism='ANONYMOUS'/>

可以看出,客戶端”無恥“的選擇了”匿名“--
'ANONYMOUS'方式

接下來的流程就是客戶端”無恥“的選擇了以匿名的方式登錄了服務(wù)器,然后再發(fā)送注冊(cè)請(qǐng)求,請(qǐng)求如下:

<iq id='uid:4e69eccd:00006784' type='set' from='447e0585@zxl/447e0585' xmlns='jabber:client'><query xmlns='jabber:iq:register'><username>bbaxiao</username><password>123456</password><name>test2</name><email>163@gmail.com</email></query></iq> 

我們看到,IQ節(jié)里包含“form”屬性,即客戶端匿名身份標(biāo)識(shí)。

注意,一個(gè)客戶端已經(jīng)以一個(gè)身份(由服務(wù)器臨時(shí)分配的一個(gè)JID)登錄,建立了會(huì)話,在服務(wù)器上我們會(huì)看到這個(gè)會(huì)話,并且服務(wù)器發(fā)送心跳一直維護(hù)這個(gè)會(huì)話。這種情況下,這個(gè)客戶端再發(fā)送注冊(cè)請(qǐng)求(另一個(gè)身份)建立與服務(wù)器的連接是不被允許的。具體請(qǐng)參考XEP-0077(In-Band Registration):我們關(guān)注這兩段:

If the entity cancels its registration with its "home" server (i.e., the server at which it has maintained its XMPP account), then the entity SHOULD NOT include a 'from' or 'to' address in the remove request the server SHOULD then return a <not-authorized/> stream error and terminate all active sessions for the entity. The server SHOULD perform the remove based on the bare JID <localpart@domain.tld> associated with the current session or connection over which it received the remove request. If the server is an instant messaging and presence server that conforms to XMPP IM [8], the server SHOULD also cancel all existing presence subscriptions related to that entity (as stored in the entity's roster). 
 
If the entity cancels its registration with a service other than its home server, its home server MUST stamp a 'from' address on the remove request, which in accordance with XMPP Core will be the entity's full JID <localpart@domain.tld/resource>. The service MUST perform the remove based on the bare JID <localpart@domain.tld> portion of the 'from' address. 

If the entity cancels its registration with its "home" server (i.e., the server at which it has maintained its XMPP account), then the entity SHOULD NOT include a 'from' or 'to' address in the remove request the server SHOULD then return a <not-authorized/> stream error and terminate all active sessions for the entity. The server SHOULD perform the remove based on the bare JID <localpart@domain.tld> associated with the current session or connection over which it received the remove request. If the server is an instant messaging and presence server that conforms to XMPP IM [8], the server SHOULD also cancel all existing presence subscriptions related to that entity (as stored in the entity's roster).  
  
If the entity cancels its registration with a service other than its home server, its home server MUST stamp a 'from' address on the remove request, which in accordance with XMPP Core will be the entity's full JID <localpart@domain.tld/resource>. The service MUST perform the remove based on the bare JID <localpart@domain.tld> portion of the 'from' address.  

 

意思是說注冊(cè)請(qǐng)求不能包含“from”屬性。

正常的注冊(cè)流如下:

<iq id='uid:4e69eccd:00003d6c' type='set' xmlns='jabber:client'><query xmlns='jabber:iq:register'><username>bbaxiao</username><password>123456</password><name>test2</name><email>163@gmail.com</email></query></iq> 

---------------------------

綜上所述,解決方案如下:

一、關(guān)閉openFire的匿名登錄功能。^_^……

二、禁止GLOOX匿名認(rèn)證功能。

file:client.cpp 
 
fun: int Client::getSaslMechs( Tag* tag ) 
 
line:423 
 
//將423行注釋掉即可。 
422:if( tag->hasChildWithCData( mech, "ANONYMOUS" ) ) 
423      //mechs |= SaslMechAnonymous; 

重新編譯生成DLL即可。

三、手動(dòng)設(shè)置GLOOX客戶端SASL認(rèn)證機(jī)制

在調(diào)用j->connect()之前設(shè)置SASL認(rèn)證機(jī)制,比如設(shè)置為“DIGEST-MD5”


j->setSASLMechanisms(SaslMechDigestMd5);

這種方式的缺點(diǎn)是需要先確定服務(wù)器支持的認(rèn)證機(jī)制。

四、根據(jù)XEP-0077所述,即使其名登錄,注冊(cè)流只要不帶“from”屬性應(yīng)該也可以。所以我們要處理發(fā)出的注冊(cè)流,去除“from”屬性重新發(fā)送注冊(cè)流即可。


本文轉(zhuǎn)自:http://blog.csdn.net/abcpanpeng/article/details/7370974


posted on 2014-08-28 17:59 王海光 閱讀(1559) 評(píng)論(0)  編輯 收藏 引用 所屬分類: Openfire&Gloox
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久久久久一区二区| 国产欧美日韩亚洲一区二区三区| 欧美不卡视频一区发布| 久久精品日韩| 久久福利视频导航| 久久天天躁狠狠躁夜夜爽蜜月| 久久久久九九九| 男女激情久久| 亚洲国产一区二区三区a毛片| 欧美风情在线观看| 亚洲日本成人网| 亚洲欧美日韩电影| 久久精品盗摄| 欧美久色视频| 国产视频亚洲| 亚洲经典视频在线观看| 亚洲在线观看视频| 久久免费国产精品| 亚洲国产专区校园欧美| 亚洲先锋成人| 欧美二区在线观看| 国产精品视频yy9099| 在线观看日产精品| 亚洲一区二区av电影| 老司机精品视频网站| 亚洲免费精品| 久久久噜噜噜久久人人看| 欧美日韩福利在线观看| 国内外成人在线| 日韩网站在线看片你懂的| 久久久久高清| 中文国产成人精品| 老牛国产精品一区的观看方式| 国产精品第13页| 亚洲国内自拍| 久久久精品一区二区三区| 日韩视频中文| 欧美高清成人| 在线观看欧美成人| 欧美在线视频日韩| 亚洲图片在线观看| 欧美日韩成人一区| 亚洲高清影视| 久久亚洲一区二区三区四区| 久久综合五月| 亚洲国产精品va在看黑人| 午夜精品久久久久| 欧美精品一区二区三区四区| 一区在线免费| 久久久久久网| 欧美亚洲在线视频| 国产日韩1区| 欧美一区二区三区视频在线 | 欧美在线在线| 亚洲视频播放| 欧美午夜精品久久久久久浪潮 | 国产精品每日更新在线播放网址| 亚洲人成网站精品片在线观看| 久久精品系列| 午夜国产精品视频| 国产农村妇女毛片精品久久麻豆| 一区二区三区日韩精品视频| 欧美激情一区二区三区在线 | 亚洲视频精品| 国产精品毛片a∨一区二区三区| 一区二区三区日韩| 一区二区久久久久久| 欧美午夜免费影院| 欧美亚洲色图校园春色| 亚洲欧美日本另类| 国产主播一区二区| 另类图片国产| 美日韩在线观看| 亚洲精品影视| 亚洲日本激情| 欧美午夜宅男影院| 欧美在线观看www| 欧美制服第一页| 精品成人一区二区三区四区| 男女av一区三区二区色多| 你懂的国产精品| 在线亚洲一区| 香蕉免费一区二区三区在线观看 | 欧美综合激情网| 亚洲国产视频直播| 99国内精品久久久久久久软件| 欧美四级剧情无删版影片| 午夜精品免费在线| 久久久国产精品亚洲一区| 亚洲欧洲一区二区天堂久久| 日韩特黄影片| 国产有码一区二区| 亚洲欧洲在线观看| 欧美亚洲在线视频| 亚洲国产日韩欧美在线图片| 欧美精品激情在线| 一区二区三区四区五区精品视频 | 国产欧美日韩免费看aⅴ视频| 久久九九免费视频| 欧美aa国产视频| 亚洲综合电影一区二区三区| 久久精品国产99国产精品| 99re6这里只有精品| 亚洲欧美日韩一区二区三区在线观看| 一区二区三区在线看| 一个人看的www久久| 亚洲国产精品成人综合| 亚洲午夜一区二区| 亚洲电影免费观看高清完整版在线观看| 日韩视频免费| 亚洲第一天堂无码专区| 亚洲欧美日韩在线播放| 99re6这里只有精品| 久久精品动漫| 欧美亚洲专区| 欧美日韩亚洲国产精品| 欧美sm重口味系列视频在线观看| 国产精品亚洲综合一区在线观看| 91久久在线播放| 黑丝一区二区三区| 亚洲一区二区在线看| 艳女tv在线观看国产一区| 另类天堂av| 美国十次了思思久久精品导航| 国产精品色一区二区三区| 99国产精品自拍| 制服诱惑一区二区| 欧美二区在线播放| 毛片精品免费在线观看| 国产欧美精品在线观看| 亚洲一级二级在线| 亚洲免费一级电影| 欧美天堂亚洲电影院在线播放| 亚洲国产一区二区三区在线播| 亚洲二区在线视频| 久久久久女教师免费一区| 久久久久久亚洲精品中文字幕 | 裸体一区二区| 伊人成人开心激情综合网| 久久国产精品久久国产精品| 久久精品中文字幕免费mv| 国产欧美一区二区三区沐欲| 午夜视频一区二区| 久久精品卡一| 国产视频在线观看一区| 亚洲男人的天堂在线观看| 午夜精品久久久久| 国产精品一区在线观看| 先锋影音一区二区三区| 久久久国际精品| 在线观看视频一区二区欧美日韩| 久热精品在线| 亚洲国产成人久久综合一区| 亚洲裸体视频| 免费亚洲电影| 欧美一二三区在线观看| 欧美在线观看一区二区| 国产欧美三级| 欧美与黑人午夜性猛交久久久| 久久色在线观看| 亚洲人成亚洲人成在线观看图片 | 欧美日产一区二区三区在线观看| 日韩亚洲欧美中文三级| 小黄鸭精品密入口导航| 国产亚洲精品高潮| 免费一区二区三区| 一本色道久久综合亚洲精品婷婷 | 欧美日韩国产成人| 中文一区字幕| 久久亚洲高清| 日韩图片一区| 国产亚洲精品高潮| 欧美激情1区2区3区| 亚洲欧美国产三级| 亚洲国产91精品在线观看| 亚洲免费小视频| 亚洲日本乱码在线观看| 国产精品一区二区三区久久久| 老鸭窝91久久精品色噜噜导演| 一区二区三区欧美激情| 免费高清在线一区| 亚洲伊人一本大道中文字幕| 亚洲电影在线| 国产精品视频内| 欧美精品一区二区精品网| 香蕉久久精品日日躁夜夜躁| 日韩视频在线免费观看| 蜜臀91精品一区二区三区| 亚洲欧美日韩在线综合| 亚洲精品美女在线| 一区二区三区自拍| 国产精自产拍久久久久久蜜| 欧美黑人在线观看| 久久男人av资源网站| 亚洲免费一区二区| 夜夜嗨av一区二区三区四区| 欧美激情视频一区二区三区免费 | 在线一区二区三区四区| 亚洲国产精品久久久久| 美女视频黄免费的久久|