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

面對(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è)。現(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 王海光 閱讀(1558) 評(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>
            国产亚洲视频在线| 午夜精品一区二区三区在线播放 | 国产视频精品va久久久久久| 欧美亚洲第一区| 国产九区一区在线| 在线观看成人av| 99精品免费视频| 久久国产乱子精品免费女| 久久亚洲二区| 亚洲精品一二区| 午夜在线观看欧美| 欧美高清在线视频| 国产麻豆综合| 亚洲激情啪啪| 亚洲欧美在线x视频| 久久久欧美一区二区| 亚洲国产精品成人精品| 亚洲视频二区| 老司机免费视频一区二区三区| 欧美激情在线| 国内外成人免费视频| 亚洲美女精品久久| 久久xxxx| 日韩一区二区高清| 久久久精品国产免费观看同学| 欧美日韩久久不卡| 亚洲第一偷拍| 久久精品国产精品亚洲精品| 亚洲黄色大片| 久久久久久久久久看片| 国产精品美女久久久久久久| 亚洲精品久久久久久久久| 亚洲欧美日韩综合国产aⅴ| 亚洲国产成人精品久久| 国产乱码精品一区二区三区av| 在线看欧美日韩| 欧美一区二区三区四区高清| 亚洲啪啪91| 久久综合伊人77777| 国产伦精品一区二区三区免费迷| 亚洲精品日产精品乱码不卡| 久久人91精品久久久久久不卡| 夜夜嗨一区二区| 欧美激情第六页| 激情六月婷婷综合| 久久久女女女女999久久| 亚洲欧美电影院| 欧美丝袜一区二区三区| 99国产精品久久久久久久| 亚洲盗摄视频| 蜜臀久久99精品久久久久久9| 国际精品欧美精品| 久久久另类综合| 久久丁香综合五月国产三级网站| 国产精品尤物| 欧美在线播放一区二区| 亚洲一区二区不卡免费| 国产精品久久久久毛片软件| 亚洲免费视频一区二区| 中日韩男男gay无套| 国产精品第十页| 亚洲免费一区二区| 午夜精品久久久久久久久久久| 国产精品一区在线播放| 久久精品国产一区二区三区免费看| 亚洲伊人伊色伊影伊综合网| 国产精品视频一区二区三区| 欧美中文字幕在线播放| 久久精品国产v日韩v亚洲| 亚洲大黄网站| 91久久久亚洲精品| 国产精品久久97| 久久久91精品| 蜜臀99久久精品久久久久久软件| 日韩一级二级三级| 亚洲视频一二三| 黄色欧美日韩| 亚洲另类视频| 国产亚洲精品久久久久婷婷瑜伽| 久久综合电影| 欧美三级日韩三级国产三级| 久久成人免费视频| 欧美sm视频| 午夜精品一区二区三区在线视| 性欧美1819sex性高清| 亚洲国产精品专区久久| 一本一道久久综合狠狠老精东影业 | 亚洲欧美网站| 亚洲天堂成人在线观看| 一区二区三区视频在线播放| 国产精品在线看| 欧美99在线视频观看| 欧美日韩免费视频| 久久精品首页| 欧美日韩一区三区四区| 久久久av毛片精品| 欧美久久久久久蜜桃| 久久久综合激的五月天| 欧美日韩免费看| 久久综合伊人77777| 欧美日韩精品在线播放| 久久亚洲欧洲| 国产精品麻豆va在线播放| 欧美黄色一区二区| 国产伦精品一区| 亚洲精品一区二区三| 国内伊人久久久久久网站视频 | 亚洲高清av| 国产精品一区二区久久精品 | 欧美一级片一区| 夜色激情一区二区| 久久久久久成人| 性做久久久久久久久| 欧美另类变人与禽xxxxx| 免费看成人av| 国产综合色精品一区二区三区| 99国产精品久久久久久久成人热 | 亚洲摸下面视频| 99国产精品国产精品久久| 久久久久网站| 久久久免费观看视频| 国产精品美女www爽爽爽| 亚洲日本久久| 亚洲精品永久免费| 免费在线亚洲欧美| 欧美jjzz| 亚洲国产导航| 麻豆精品国产91久久久久久| 久久欧美中文字幕| 一区二区亚洲欧洲国产日韩| 欧美影视一区| 久久视频一区二区| 激情婷婷欧美| 老司机午夜精品视频| 欧美a级一区| 亚洲国产美女| 欧美日韩大片一区二区三区| 91久久综合| 亚洲天堂av在线免费观看| 欧美日韩免费看| 亚洲午夜av| 久久精品首页| 91久久精品国产91久久性色| 欧美大片免费| 99综合精品| 欧美一级视频免费在线观看| 国产啪精品视频| 久久久亚洲国产天美传媒修理工| 99精品视频一区二区三区| 亚洲美女视频在线观看| 欧美日韩精品一本二本三本| 国产精品女主播| 亚洲影院在线观看| 夜夜精品视频一区二区| 免费日韩一区二区| 欧美成人xxx| 国产精品一区2区| 亚洲欧美另类在线| 欧美二区乱c少妇| 亚洲欧美日韩国产中文| 欧美在线免费| 国产乱码精品一区二区三区不卡| 亚洲激情成人在线| 亚洲一区激情| 久久夜色精品国产欧美乱| 亚洲精品久久久久| 欧美尤物巨大精品爽| 欧美日韩亚洲不卡| 亚洲激情不卡| 亚洲黄一区二区| 欧美日产国产成人免费图片| 国外视频精品毛片| 国产一区二区精品在线观看| 久久精品99久久香蕉国产色戒| 一区二区三区欧美亚洲| 欧美日韩福利| 久久精品二区三区| 免费亚洲一区二区| 99精品99久久久久久宅男| 毛片精品免费在线观看| 久久国产精品久久国产精品| 极品尤物一区二区三区| 亚洲高清视频一区二区| 欧美顶级大胆免费视频| 亚洲系列中文字幕| 欧美一区激情| 亚洲欧美一区二区三区久久 | 一本久道久久综合婷婷鲸鱼| 国产乱码精品一区二区三区五月婷 | 亚洲经典在线看| 欧美日韩系列| 久久久视频精品| 国产精品久久亚洲7777| 欧美激情一区二区三区全黄 | 欧美电影免费| 欧美在线视频网站| 欧美电影免费观看高清完整版| 亚洲欧美文学| 国产精品观看| 在线一区二区三区四区|