賀宗梅
(長(zhǎng)沙民政職業(yè)技術(shù)學(xué)院,湖南 長(zhǎng)沙 410004)
OAuth授權(quán)方式在移動(dòng)信息平臺(tái)開(kāi)發(fā)中的應(yīng)用研究
賀宗梅
(長(zhǎng)沙民政職業(yè)技術(shù)學(xué)院,湖南 長(zhǎng)沙 410004)
文中在介紹OAuth認(rèn)證協(xié)議的基礎(chǔ)上,以基于“豆瓣(douban)”中國(guó)社區(qū)網(wǎng)站的移動(dòng)信息平臺(tái)開(kāi)發(fā)為例,研究了OAuth授權(quán)方式,實(shí)現(xiàn)了系統(tǒng)的我讀、我看、我評(píng)的日記、新書(shū)、搜素、書(shū)評(píng)等功能,探索了第三方無(wú)需使用用戶(hù)的用戶(hù)名與密碼就可以申請(qǐng)獲得該用戶(hù)資源授權(quán)的開(kāi)發(fā)模式。
OAuth認(rèn)證協(xié)議;移動(dòng)開(kāi)發(fā);授權(quán)
豆瓣(douban)是一個(gè)中國(guó)大陸的社區(qū)網(wǎng)站。該網(wǎng)站以書(shū)影音起家,提供關(guān)于書(shū)籍、電影、音樂(lè)等作品的信息,無(wú)論描述還是評(píng)論都由用戶(hù)提供,是中國(guó)Web2. 0網(wǎng)站中具有特色的一個(gè)網(wǎng)站。豆瓣客戶(hù)端采用OAuth授權(quán)方式。
OAuth協(xié)議為用戶(hù)資源的授權(quán)提供了一個(gè)安全、開(kāi)放而又簡(jiǎn)易的標(biāo)準(zhǔn)。與以往的授權(quán)方式不同之處是OAuth的授權(quán)不會(huì)使第三方觸及到用戶(hù)的帳號(hào)信息(如用戶(hù)名與密碼),即第三方無(wú)需使用用戶(hù)的用戶(hù)名與密碼就可以申請(qǐng)獲得該用戶(hù)資源的授權(quán),因此OAuth是安全的。同時(shí),任何第三方都可以使用OAuth認(rèn)證服務(wù),任何服務(wù)提供商都可以實(shí)現(xiàn)自身的OAuth認(rèn)證服務(wù),因而OAuth是開(kāi)放的。業(yè)界提供了OAuth的多種實(shí)現(xiàn),如PHP、JavaScript、Java、Ruby等各種語(yǔ)言開(kāi)發(fā)包,大大節(jié)約了程序員的時(shí)間,因而OAuth是簡(jiǎn)易的。目前互聯(lián)網(wǎng)很多服務(wù)如Open API,很多大公司如Google、Yahoo、Microsoft等都提供了OAuth認(rèn)證服務(wù),這些都足以說(shuō)明OAuth標(biāo)準(zhǔn)逐漸成為開(kāi)放資源授權(quán)的標(biāo)準(zhǔn)。
(1)Request Token URL:獲取未授權(quán)的 Request Token;
(2)User Authorization URL:請(qǐng)求用戶(hù)授權(quán)Request Token
(3)Access Token URL:使用授權(quán)后的Request Token換取Access Token使用Access Token訪問(wèn)或修改受保護(hù)資源
1.2 OAuth相關(guān)的參數(shù)定義
(1)OAUTH_consumer_key:使用者的ID,OAUTH服務(wù)的直接使用者是開(kāi)發(fā)者開(kāi)發(fā)出來(lái)的應(yīng)用。所以該參數(shù)值的獲取一般是要去OAUTH服務(wù)提供商處注冊(cè)一個(gè)應(yīng)用,再獲取該應(yīng)用的OAUTH_consumer_key。
(2)OAUTH_consumer_secret:OAUTH_consumer_key對(duì)應(yīng)的密鑰。
(3)OAUTH_token:OAUTH進(jìn)行到最后一步得到的一個(gè)“令牌”,通過(guò)此“令牌”請(qǐng)求,就可以去擁有資源的網(wǎng)站抓取任意有權(quán)限可以被抓取的資源。
(4)OAUTH_token_secret:OAUTH_token對(duì)應(yīng)的私鑰。
(5)OAUTH_signature_method:請(qǐng)求串的簽名方法,應(yīng)用每次向OAUTH三個(gè)服務(wù)地址發(fā)送請(qǐng)求時(shí),必須對(duì)請(qǐng)求進(jìn)行簽名。簽名的方法有:HMAC-SHA1、RSA-SHA1與PLAINTEXT等三種。
(6)OAUTH_signature:用上面的簽名方法對(duì)請(qǐng)求的簽名。
(7)OAUTH_timestamp:發(fā)起請(qǐng)求的時(shí)間戳,其值是距1970 00:00:00 GMT的秒數(shù),必須是大于0的整數(shù)。本次請(qǐng)求的時(shí)間戳必須大于或者等于上次的時(shí)間戳。
(8)OAUTH_nonce:隨機(jī)生成的字符串,用于防止請(qǐng)求的重復(fù),防止外界的非法攻擊。
(9)OAUTH_version:OAUTH的版本號(hào)。
1.3 OAuth認(rèn)證授權(quán)流程
OAuth認(rèn)證授權(quán)就三個(gè)步驟,三句話可以概括:(1)獲取未授權(quán)的Request Token;(2)獲取用戶(hù)授權(quán)的Request Token;(3)用授權(quán)的Request Token換取Access Token。當(dāng)應(yīng)用拿到Access Token后,就可以有權(quán)訪問(wèn)用戶(hù)授權(quán)的資源了。在三個(gè)步驟中,每個(gè)步驟分別請(qǐng)求一個(gè)URL,并且收到相關(guān)信息,并且拿到上步的相關(guān)信息去請(qǐng)求接下來(lái)的URL直到拿到Access Token。
2.1 系統(tǒng)架構(gòu)設(shè)計(jì)
系統(tǒng)采用三層架構(gòu),通過(guò)劃分客戶(hù)與服務(wù)器之間的功能,分布式計(jì)算提供了一種把應(yīng)用中的用戶(hù)界面從企業(yè)邏輯中分離出來(lái)的自然方法。在分布式環(huán)境下,企業(yè)邏輯提供了一種把應(yīng)用中的用戶(hù)界面從企業(yè)邏輯中分離出來(lái)的自然方法。在分布式環(huán)境下,企業(yè)邏輯集中地安裝在應(yīng)用服務(wù)器上,這樣就降低了客戶(hù)端的負(fù)載,同時(shí)對(duì)敏感信息的訪問(wèn)也可以得到很好的控制。在分布式計(jì)算模式中,由于所有的商業(yè)邏輯都駐留在服務(wù)器端,信息管理部就可以十分方便地監(jiān)控服務(wù)器的運(yùn)行情況,很容易地控制訪問(wèn)服務(wù)器以及與服務(wù)器應(yīng)用打交道人員的數(shù)量。這可以大大簡(jiǎn)化管理員對(duì)系統(tǒng)的管理,減輕系統(tǒng)維護(hù)的工作量,并確保系統(tǒng)的可靠運(yùn)行。軟件設(shè)計(jì)時(shí),考慮到整個(gè)系統(tǒng)的延續(xù)性和可擴(kuò)充性,我們將系統(tǒng)應(yīng)用體系分為三部分:用戶(hù)表現(xiàn)層、數(shù)據(jù)訪問(wèn)層、商業(yè)邏輯層。(1)用戶(hù)表現(xiàn)層:處理用戶(hù)界面的功能;(2)數(shù)據(jù)訪問(wèn)層:處理數(shù)據(jù)庫(kù)的訪問(wèn)與交互;(3)商業(yè)邏輯層:處理系統(tǒng)的業(yè)務(wù)邏輯。
2.2 模塊功能設(shè)計(jì)
本客戶(hù)端的數(shù)據(jù)都是通過(guò)網(wǎng)絡(luò)來(lái)自于豆瓣的服務(wù)器,產(chǎn)生的數(shù)據(jù)也是上傳到豆瓣的服務(wù)器,在客戶(hù)端存儲(chǔ)的只有OAuth產(chǎn)生的一些省份識(shí)別信息,所以本客戶(hù)端無(wú)需使用數(shù)據(jù)庫(kù)。
本豆瓣客戶(hù)端大致分為登陸頁(yè)面、我的豆瓣、搜索、新書(shū)、評(píng)論4大模塊,分別負(fù)責(zé)不同的功能:
(1)登陸模塊:訪問(wèn)用戶(hù)的信息與數(shù)據(jù)需要經(jīng)過(guò)用戶(hù)的授權(quán),所以必須有用戶(hù)授權(quán)的模塊,本軟件才能正常使用。
(2)我的豆瓣:是登陸用戶(hù)的相關(guān)信息,在該模塊中又分為很多小模塊,例如:我讀,顯示標(biāo)記為我讀的所有書(shū)籍;我看,顯示標(biāo)記為我看過(guò)的所有視頻;我聽(tīng),顯示標(biāo)記為我聽(tīng)過(guò)的所有音頻;我評(píng),顯示我所有評(píng)論的記錄;我的日記,顯示我所有的寫(xiě)過(guò)的日記,并能新建日記、我的資料,顯示登錄用戶(hù)的基本信息。
(3)新書(shū)模塊:從豆瓣數(shù)據(jù)庫(kù)中獲取市面上最新出版的書(shū)籍并顯示。
(4)搜索模塊:通過(guò)用戶(hù)輸入字段去搜索書(shū)籍、音頻、視頻。
(5)評(píng)論:書(shū)籍、視頻、音頻都可以看為一個(gè)對(duì)象,這個(gè)對(duì)象有一個(gè)共同的特性就是能評(píng)論。
3.1 客戶(hù)端登陸與授權(quán)
首先在manifest文件中為首頁(yè)的Activity下面這行代碼:
首先是進(jìn)入splash頁(yè)面,然后跳轉(zhuǎn)到MainTabActivity頁(yè)面,MainTabActivity中的TabHost的控件默認(rèn)是FavActivity界面,進(jìn)入這個(gè)界面后會(huì)通過(guò)cookie的檢查看是否登錄過(guò)。因?yàn)樵诘卿浀臅r(shí)候全部是模擬的HTTP請(qǐng)求,所以我們可以把http respose的cookie通過(guò)java文件的操作把cookie存儲(chǔ)在本地文件中,這樣就解決了反復(fù)登錄的麻煩。
同樣為了不需要反復(fù)的認(rèn)證,我們也把認(rèn)證的結(jié)果存儲(chǔ)在SharedPreferences中,這樣就避免了每次要從豆瓣服務(wù)器中獲取數(shù)據(jù)就要認(rèn)證的麻煩,認(rèn)證成功后在sharePreferences中保存信息:
3.2 系統(tǒng)界面
3.2.1 splash頁(yè)面
圖1 splash頁(yè)面
3.2.2 首頁(yè)
圖2 首頁(yè)
本系統(tǒng)以“豆瓣(douban)”中國(guó)社區(qū)網(wǎng)站為基礎(chǔ),開(kāi)發(fā)了其對(duì)應(yīng)的移動(dòng)信息平臺(tái),對(duì)我讀、我看、我評(píng)的日記、新書(shū)、搜素、書(shū)評(píng)等功能做了很好的實(shí)現(xiàn)。在權(quán)限管理方面,采用OAuth認(rèn)證協(xié)議,探索了第三方無(wú)需使用用戶(hù)的用戶(hù)名與密碼就可以申請(qǐng)獲得該用戶(hù)資源授權(quán)的開(kāi)發(fā)模式,具有很好的應(yīng)用價(jià)值。
[1]吳世忠.應(yīng)用密碼學(xué)—協(xié)議、算法與C源程序[M].北京:機(jī)械工程出版社,2000.
[2]Guo Z Z,Li M C,Cui Y R,Fan X X.Dynamic multi-attribute Based encryption[J].JDCTA:International Journal of Digital Content Technology and its Applications,2011.281-289.
[3]王行榮.異構(gòu)數(shù)據(jù)同步方法與研究 [J].微電子學(xué)與計(jì)算機(jī),2006,21(5):175-178.
[4]吳世忠等.構(gòu)建信息安全保障新體系[M].北京:中國(guó)經(jīng)濟(jì)出版社,2007.5.
TP311
B
1671-5136(2014)03-0127-03
2014-09-05
湖南省科技計(jì)劃項(xiàng)目(編號(hào):2014GK3032)、湖南省教育廳科研項(xiàng)目(編號(hào):13C1050)資助。
賀宗梅(1976-),男,湖南攸縣人,長(zhǎng)沙民政職業(yè)技術(shù)學(xué)院軟件學(xué)院副教授、系統(tǒng)分析師.研究方向:系統(tǒng)架構(gòu),分布式技術(shù)。
長(zhǎng)沙民政職業(yè)技術(shù)學(xué)院學(xué)報(bào)2014年3期