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

面對(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>
            久久精品成人| 久久精品麻豆| 欧美性一区二区| 亚洲午夜精品一区二区| 一区二区激情视频| 国产精品一区二区你懂得 | 国产亚洲一区二区精品| 久久久国际精品| 噜噜噜噜噜久久久久久91 | 影音先锋在线一区| 亚洲国产高清一区| 国产精品久久久久久久久借妻| 欧美亚洲在线观看| 久久久国产精品一区二区中文| 狠狠综合久久| 亚洲精品国产无天堂网2021| 国产精品igao视频网网址不卡日韩| 亚洲综合国产| 老色批av在线精品| 亚洲女同精品视频| 美女图片一区二区| 欧美在线影院| 欧美高清在线一区| 久久久久久久999| 欧美精品在线免费观看| 久久黄色级2电影| 欧美日韩精品久久| 久久综合给合| 国产精品入口麻豆原神| 亚洲国产精品一区二区第一页| 国产精品日韩欧美大师| 亚洲欧洲一区| 精品51国产黑色丝袜高跟鞋| 一区二区欧美日韩| 亚洲欧洲精品一区二区精品久久久 | 亚洲午夜激情网站| 久热精品视频在线免费观看| 午夜在线一区| 欧美日韩一区在线| 亚洲国产黄色片| 国产婷婷成人久久av免费高清| 亚洲片国产一区一级在线观看| 国语自产偷拍精品视频偷 | 99日韩精品| 亚洲毛片在线观看.| 久久久久久久久一区二区| 亚洲女性喷水在线观看一区| 欧美日韩ab| 亚洲激情影院| 亚洲精品欧美日韩| 欧美aa在线视频| 欧美高清视频一二三区| 精品动漫一区| 久久久精品tv| 久久一区视频| 一区二区三区在线视频播放| 午夜精品久久久久久久白皮肤| 西西人体一区二区| 国产欧美日韩| 欧美一区二区视频在线观看2020 | 午夜精品亚洲一区二区三区嫩草| 国产精品成人v| 一本色道久久综合狠狠躁的推荐| 一区二区三欧美| 欧美日韩一本到| 一区二区免费看| 亚洲影院在线| 国产女主播在线一区二区| 亚洲欧美韩国| 久久久综合免费视频| 韩国一区电影| 欧美国产视频日韩| 一本色道久久加勒比88综合| 小处雏高清一区二区三区| 国产一区二区三区日韩| 久久久久国色av免费观看性色| 亚洲大胆在线| 在线亚洲电影| 国产麻豆日韩欧美久久| 久久成人精品电影| 亚洲成色777777在线观看影院| 亚洲伦理在线免费看| 国产精品久久久久高潮| 欧美一级专区| 亚洲日本免费电影| 欧美影院在线| 91久久久久| 国产精品青草久久久久福利99| 欧美一区二区日韩一区二区| 欧美激情片在线观看| 亚洲摸下面视频| 国产专区欧美专区| 欧美金8天国| 香蕉成人伊视频在线观看| 免费在线亚洲| 午夜国产欧美理论在线播放| 韩国女主播一区二区三区| 欧美日韩精品一区二区在线播放 | 久久精品1区| 日韩一二三区视频| 国产欧美一区二区精品性色| 快播亚洲色图| 午夜久久影院| 日韩写真视频在线观看| 老司机aⅴ在线精品导航| 亚洲视频在线看| 韩曰欧美视频免费观看| 国产精品高潮呻吟视频| 免费一级欧美片在线观看| 亚洲一品av免费观看| 亚洲国产精品嫩草影院| 久久精品国产69国产精品亚洲| 一个色综合导航| 亚洲国产91| 韩曰欧美视频免费观看| 国产精品你懂的在线欣赏| 欧美国产日本在线| 久久久青草婷婷精品综合日韩 | 亚洲欧洲精品天堂一级| 久久五月婷婷丁香社区| 午夜伦欧美伦电影理论片| 亚洲精品欧美日韩专区| 亚洲第一黄网| 好吊妞这里只有精品| 国产伦精品一区二区三| 欧美图区在线视频| 欧美日韩国产三区| 欧美顶级大胆免费视频| 免费观看欧美在线视频的网站| 午夜一区在线| 午夜免费日韩视频| 亚洲自拍啪啪| 欧美亚洲视频| 欧美一级视频| 欧美在线黄色| 久久激情久久| 欧美在线观看日本一区| 欧美专区福利在线| 久久国产精品一区二区| 午夜日本精品| 欧美专区一区二区三区| 久久久精品国产一区二区三区 | 亚洲电影免费观看高清| 亚洲二区在线视频| 亚洲国产另类久久久精品极度| 亚洲国产精品成人va在线观看| 亚洲福利视频专区| 亚洲人体偷拍| 这里只有精品视频在线| 亚洲小说区图片区| 午夜精品久久| 久久精品免费观看| 鲁大师影院一区二区三区| 欧美不卡视频一区发布| 欧美人妖在线观看| 国产精品久久久久久av福利软件| 国产精品久久久久久久一区探花| 国产精品亚洲综合天堂夜夜| 国产日韩久久| 亚洲国产一区二区三区青草影视 | 欧美国产日韩精品| 亚洲日本国产| 亚洲欧美在线一区| 久久女同互慰一区二区三区| 欧美激情成人在线| 欧美性大战久久久久久久蜜臀| 国产欧美日韩亚洲一区二区三区| 黄色精品一二区| 亚洲乱码日产精品bd| 欧美一区二区三区成人| 欧美fxxxxxx另类| 99国产一区| 久久久综合免费视频| 欧美视频一区| 在线观看亚洲视频| 亚洲一区二区三区激情| 久久天天狠狠| 夜夜嗨av一区二区三区网页| 久久人91精品久久久久久不卡| 欧美精品99| 韩国v欧美v日本v亚洲v| 亚洲神马久久| 欧美好骚综合网| 亚洲女女女同性video| 欧美电影资源| 狠狠干成人综合网| 亚洲欧美精品在线观看| 欧美福利一区二区三区| 欧美亚洲视频一区二区| 欧美午夜激情小视频| 最新亚洲一区| 麻豆精品视频在线| 新狼窝色av性久久久久久| 欧美人与性动交α欧美精品济南到| 国产综合网站| 久久本道综合色狠狠五月| 亚洲美女黄网| 欧美国产在线观看| 亚洲第一中文字幕在线观看| 性18欧美另类|