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