国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

第三方應(yīng)用與開放平臺OAuth認證互連技術(shù)研究

2012-04-29 22:16:26劉大紅劉明
電腦知識與技術(shù) 2012年22期

劉大紅 劉明

摘要:針對國內(nèi)開放平臺的用戶驗證和授權(quán)問題,分析了OAuth服務(wù)中第三方應(yīng)用、普通用戶、授權(quán)服務(wù)器及資源服務(wù)相互認證模型。最后以騰訊開放平臺為例,對其接入規(guī)范和騰訊OpenAPI進行研究,實現(xiàn)并驗證了BBS站點與騰訊開放平臺的賬號互通功能。關(guān)鍵詞:OAuth;賬號互通;開放身份認證;OpenAPI

中圖分類號:TP393文獻標識碼:A文章編號:1009-3044(2012)22-5367-03

Research on the Third Party Applications and Open Platforms Interconnection Based on OAuth Authentication

LIU Da-hong1,3, LIU Ming2

(1.School of Software Engineering,Tongji University,Shanghai 200000,China; 2.School of Mathematics and Computer Science,Ningxia University, Yinchuan 750021,China; 3.Yinchuan Vocational and Technical College,Yinchuan 750021,China)

Abstract: In face of user validation and authorization problems.Analyse the authentication model among third party applications,users,authorization servers and resource servers in OAuth service.In the end,take Tencent open platform for example,research its access standard and OpenAPI,realise and verify account interchange function between a BBS site and Tencent open platform.

Key words: OAuth; account interconnection; open identity authentication; OpenAPI

開放平臺代表了互聯(lián)網(wǎng)數(shù)據(jù)開放的發(fā)展趨勢,國內(nèi)外IT巨頭先后推出了自己的開放平臺以實現(xiàn)戰(zhàn)略聯(lián)盟與抗衡,如騰訊開放平臺、新浪微博開放平臺、百度開放平臺、人人網(wǎng)開放平臺及360開放平臺等。開放平臺可以實現(xiàn)社交網(wǎng)站之間用戶賬號互通,減少用戶登錄操作;第三方應(yīng)用可以基于社交網(wǎng)站的開放接口OpenAPI對授權(quán)數(shù)據(jù)進行應(yīng)用開發(fā),實現(xiàn)戰(zhàn)略共贏。OAuth協(xié)議為開放平臺中用戶資源授權(quán)與身份驗證問題提供了一個安全、開放的標準。

1基于OAuth協(xié)議的認證授權(quán)技術(shù)

1.1 OAuth協(xié)議

OAuth(Open Authentication)是一個開放的認證協(xié)議,其可以在不讓第三方接觸用戶名和密碼等敏感信息的前提下,完成第三方對用戶資源訪問請求的認證授權(quán)。2010年OAuth1.0被IETF認定為互聯(lián)網(wǎng)標準協(xié)議[1]。目前,國內(nèi)外大多數(shù)開放平臺采用了OAuth2.0安全認證機制,同時提供OAuth1.0的安全認證支持。由于它的簡易性、安全性和開放性[2],OAuth已成為開放資源授權(quán)事實上的標準。

簡單性,無論OAuth服務(wù)提供者還是應(yīng)用開發(fā)者,OAuth易于理解與使用;業(yè)界提供了OAuth的多種實現(xiàn)如PHP,JavaScript,Java等各種語言開發(fā)包,程序?qū)崿F(xiàn)簡單。

安全性,OAuth是一個基于令牌的訪問協(xié)議。用戶通過令牌授權(quán)第三方應(yīng)用訪問其存儲在服務(wù)提供者上的信息。其中沒有涉及到用戶賬戶、密碼等信息。

開放性,OAuth對服務(wù)提供商和第三方開發(fā)者并沒有限制,很多公司都提供了OAuth認證服務(wù)與OpenAPI。目前,開放平臺支持包括第三方Web/Wap網(wǎng)站、PC桌面客戶端應(yīng)用、移動終端應(yīng)用、各種瀏覽器插件應(yīng)用以及各種開源建站系統(tǒng)的插件應(yīng)用等來自第三方的各種類型應(yīng)用。

1.2 OAuth協(xié)議認證流程

OAuth認證的基本思想[3]是第三方應(yīng)用在需要訪問用戶開放平臺上存儲的數(shù)據(jù)時,會將用戶重定向至開放平臺的定制網(wǎng)頁,用戶在登錄后完成身份認證并生成授權(quán)令牌,然后由開放平臺重定向用戶至第三方客戶端并授予第三方訪問令牌,第三方客戶端即可憑借該令牌,訪問平臺開放的應(yīng)用接口。OAuth認證流程涉及以下四個角色[4]之間的交互。

資源擁有者:可以授權(quán)控制第三方應(yīng)用訪問開放平臺中的受保護資源的網(wǎng)站用戶,同時第三方應(yīng)用的使用者。

第三方客戶端:包含跨域訪問開放平臺中OpenAPI的客戶端和OAuth認證授權(quán)的客戶端,即需要獲取授權(quán)和發(fā)送受保護資源請求的第三方應(yīng)用。

資源服務(wù)器:存儲用戶資源,響應(yīng)第三方客戶端的訪問令牌和受保護資源請求的開放平臺服務(wù)器。

授權(quán)服務(wù)器:能夠成功驗證資源擁有者和獲取授權(quán),并分發(fā)令牌的服務(wù)器。單獨一個授權(quán)服務(wù)器可以為多個資源服務(wù)器分發(fā)令牌。OAuth認證流程如圖1所示。

圖1 OAuth認證流程圖

(1)客戶端向資源擁有者請求授權(quán)。授權(quán)請求直接發(fā)送給資源擁有者,或者間接的通過授權(quán)服務(wù)器發(fā)送請求;

(2)資源擁有者授權(quán)客戶端,為客戶端頒發(fā)一訪問許可(Authorization Code);

(3)客戶端提交自己的私有證書和(2)中得到的訪問許可,向授權(quán)服務(wù)器請求訪問令牌;

(4)授權(quán)服務(wù)器驗證客戶端的私有證書和訪問許可的有效性,若驗證有效,則向客戶端發(fā)送一個包含許可作用域、有效時間等信息的訪問令牌;

(5)客戶端向資源服務(wù)器出示訪問令牌,請求訪問授權(quán)資源;

(6)資源服務(wù)器驗證訪問令牌,若有效,則客戶端可訪問資源服務(wù)器上受保護的資源[5]。

2第三方應(yīng)用與騰訊開放平臺對接的設(shè)計及實現(xiàn)

2.1騰訊社區(qū)開放平臺OAuth認證分析

各社交網(wǎng)站開放平臺認證流程基本一致,本文對騰訊社區(qū)開放平臺進行分析開發(fā)。第三方應(yīng)用的QQ登錄接入流程如圖2所示,圖3描述了騰訊社區(qū)開放平臺OAuth服務(wù)的認證過程。

圖2騰訊開放平臺第三方應(yīng)用接入流程

第1步:申請QQ登錄接入,獲得appid與appkey;

第2步:使用騰訊開放平臺提供的SDK包或者OAuth2.0協(xié)議,自主開發(fā)將appid與appkey嵌入網(wǎng)站程序,并填寫QQ登錄的回調(diào)地址,保證網(wǎng)站和openapi.qzone.qq.com的連接暢通;

第3步:向騰訊開放平臺提交appid,獲取未授權(quán)的Request Token;

第4步:請求QQ用戶授權(quán),若用戶同意騰訊開放平臺返回第三方授權(quán)的Request Token,用戶不同意則返回登錄頁面;第5步:使用授權(quán)后的Request Token向騰訊開放平臺換取Access Token,跳轉(zhuǎn)回第三方網(wǎng)站,完成認證;

第6步:根據(jù)access_token獲得對應(yīng)用戶身份的openid;將Openid其與用戶在網(wǎng)站上的原有賬號進行綁定;

第7步:通過攜帶Acess Token訪問OpenAPI,訪問或修改用戶授權(quán)的資源,如用戶資料,日志,相冊,說說等信息。

2.2騰訊社區(qū)用戶的BBS集成登錄實現(xiàn)

本地BBS論壇基于JSP開發(fā),因此選用騰訊的JS SDK進行二次開發(fā),在頁面頂部引入JS SDK庫,在頁面頂部引入JS SDK庫,引入代碼如下:

在本地BBS論壇登錄頁面中設(shè)置QQ登錄按鈕,調(diào)用上述引入SDK,

<span id="qq_login_btn"></span>

圖3騰訊開放平臺OAuth認證流程

QC.Login({

btnId:"qq_login_btn"http://插入按鈕的節(jié)點id

})

當用戶點擊QQ登錄圖標是就會引導(dǎo)用戶輸入QQ號碼和密碼,跳轉(zhuǎn)到騰訊開放平臺,登陸成功后,第三方BBS會請求用戶授權(quán)訪問其受保護信息,效果如圖4所示

圖4騰訊社區(qū)OAuth認證授權(quán)頁面

得到用戶授權(quán)后,本地BBS就可以通過OpenAPI訪問用戶在騰訊服務(wù)器上的信息,調(diào)用get_user_info獲取用戶在QQ空間的個人資料,在不許用戶操作,即可完善其在本地BBS中的個人基本信息,代碼及注釋如下:

var paras = {};//用JS SDK調(diào)用OpenAPI

QC.api("get_user_info", paras)

//指定接口訪問成功的接收函數(shù),s為成功返回Response對象

.success(function(s){

alert("獲取用戶信息成功!當前用戶昵稱為:"+s.data.nickname); //成功回調(diào),通過s.data獲取OpenAPI的返回數(shù)據(jù)

})

//指定接口訪問失敗的接收函數(shù),f為失敗返回Response對象

.error(function(f){

alert("獲取用戶信息失??!");

})//失敗回調(diào)

.complete(function(c){alert("獲取用戶信息完成!");

});//指定接口完成請求后的接收函數(shù),c為完成請求返回Response對象

</script>

3結(jié)束語

本文實現(xiàn)的第三方BBS站點與社交開放平臺的對接登錄,利于互聯(lián)網(wǎng)企業(yè)共享用戶群體優(yōu)勢,推廣自身網(wǎng)站;同時減少了用戶在多個平臺登錄的操作,實現(xiàn)互聯(lián)網(wǎng)跨平臺一站式社交體驗。集成插件可以減少第三方開發(fā)者的代碼編寫,更加方便和快速的實現(xiàn)賬號互聯(lián)登錄,將是開放平臺OAuth認證服務(wù)的發(fā)展方向。

參考文獻:

[1] RFC5849: The OAuth 1.0 Protocol[S].

[2]劉鏑,張智江,張尼.基于國內(nèi)開放平臺的Oauth認證框架研究[J].信息通信技術(shù),2011(6):43-46.

[3]張輝華,李煒.WDPF系統(tǒng)中認證授權(quán)流程的設(shè)計與實現(xiàn)[J].電信網(wǎng)技術(shù),2010(11):89-93.

[4]張衛(wèi)全,胡志遠.淺析作用于Web2_0安全防范的OpenID和OAuth機制[J].通信管理技術(shù),2011,4(2):15-18.

[5]時子慶,劉金蘭,譚曉華.基于OAuth2_0的認證授權(quán)技術(shù)[J].計算機系統(tǒng)應(yīng)用,2012,21(3):260-264.

资兴市| 独山县| 肥乡县| 秦安县| 荔浦县| 乌兰浩特市| 白山市| 平远县| 读书| 壤塘县| 海伦市| 衡阳县| 麟游县| 耿马| 根河市| 万宁市| 沿河| 临洮县| 山丹县| 沙雅县| 略阳县| 筠连县| 无棣县| 固镇县| 平顺县| 彭州市| 濉溪县| 屏边| 江陵县| 弥勒县| 象州县| 武安市| 稻城县| 卢龙县| 双城市| 和平县| 子洲县| 黔南| 同仁县| 富宁县| 修文县|