999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于OAuth2.0的認證授權方案設計與優化

2018-11-16 09:35:04毛道鶴
軟件 2018年10期
關鍵詞:資源用戶

吳 德,應 毅,毛道鶴

?

基于OAuth2.0的認證授權方案設計與優化

吳 德,應 毅,毛道鶴

(三江學院 計算機科學與工程學院,江蘇 南京 210012)

OAuth 2.0是由互聯網工程任務組于2012年10月發表在RFC-6749規范文檔中定義的認證授權協議,是一種基于HTTP重定向實現的開放授權框架。它允許第三方應用訪問該用戶在某一網站上存儲的特定資源,而無需將用戶名和密碼提供給第三方應用,大幅提升用戶的WEB應用體驗。為深入研究OAuth 2.0協議的工作原理,使用Nginx 服務器、MySQL和Redis數據庫設計了一個開放授權應用框架,同時指出OAuth 2.0協議應用在授權流程中的不足之處,并給出基于WebSocket監聽機制的優化解決方案,為認證授權應用的開發提供參考。

RFC-6479;OAuth 2.0;認證;授權

0 引言

OAuth協議為用戶資源的授權提供了一個安全、開放而又簡易的標準。OAuth的授權使得第三方應用無需使用用戶的用戶名與密碼就可以申請獲得該用戶資源的授權[1]。

OAuth 2.0協議于2012年10月正式發布,作為OAuth 1.0的升級版本卻并不向下兼容OAuth 1.0協議[2]。OAuth 2.0協議更加關注客戶端開發的簡易性,同時為移動設備、Web應用、桌面應用等多種客戶端提供認證授權服務[3]。

目前,國內外各大主流互聯網公司如騰訊、新浪、豆瓣、Facebook、Google等均已支持OAuth 2.0協議[4-6]。通過在其開發者平臺上提供基于OAuth 2.0的開放授權 OpenAPI,由客戶端開發者調用,便可以向市場上的其它中小型應用分享其海量的用戶數據。通過這種方式,不同廠家不同類型的應用只要遵循OAuth 2.0協議流程,就可以引入各大主流網站的用戶資源,簡化登錄流程,優化用戶體驗,從而提高應用的可用性和用戶的活躍度。

1 OAuth 2.0原理

OAuth 2.0授權框架允許第三方應用代表資源所有者通過合法地協調資源所有者和HTTP服務之間交互,或者僅代表第三方應用本身,對Web服務進行有限地訪問。該協議允許用戶通過授權的方式讓第三方應用訪問該用戶在某一網站上存儲的私密資源(如照片,視頻,聯系人列表),而無需將用戶名和密碼提供給第三方應用[7]。

OAuth 2.0協議使得用戶通過令牌(而不是用戶名和密碼)來有限地訪問存儲在特定服務提供者那里的數據。每一個令牌授權一個特定的網站在特定的時段(例如,接下來的120分鐘內)內訪問特定的資源(例如僅限于某一相冊中的照片)。

OAuth 2.0協議定義了四個角色,分別是:

(1)Resource Owner:資源所有者,是一個能授予訪問受保護資源權限的實體。當資源所有者是人類的時候,它被稱為終端的用戶。

(2)Resource Server:資源服務器,是一個托管了受保護資源,能接收和響應使用訪問令牌訪問受保護資源請求的服務器。

(3)Client:客戶端,是代表 Resource Owner,使用其授權許可獲取受保護資源的第三方應用。服務端程序或桌面應用或移動設備,都可以是OAuth 2.0協議流程中的客戶端。

(4)Authorization Server:授權服務器,是指在 Client認證成功,并獲取了 Resource Owner 的授權之后,頒發訪問令牌給 Client 的服務器。

上述四個角色的交互流程如圖 1 所示。

圖1 OAuth 2.0交互流程

基本流程包括以下步驟:

(1)Client向Resource Owner請求授權許可。授權請求可以如圖1所示直接發送給Resource Owner,但最好是間接地通過 Authorization Server 請求授權。

(2) Client接收到一個代表 Resource Owner授權的授權許可,通常以協議規范中定義的四種許可類型之一表示。授權許可的類型由Client請求授權和 Authorization Server 所支持的類型決定。

(3)Client向Authorization Server認證身份,并通過展示授權許可請求訪問令牌。

(4)Authorization Server 認證Client身份并驗證其授權許可,若認證成功則頒發訪問令牌。

(5) Client通過展示訪問令牌向Resource Ser-ver請求受保護資源。

(6)Resource Server驗證請求中訪問令牌,若驗證成功則響應Client請求。

為了獲取訪問令牌,客戶端需要向用戶獲取授權。而用戶授權則以授權許可的形式向客戶端授予訪問受保護資源的權限。OAuth 2.0 協議中共定義了授權碼、隱式授權、用戶密碼憑據和客戶端憑據等四種類型的授權許可。

2 基于OAuth2.0的設計框架

OAuth 2.0的協議只是規定了相關規范,但不同開發者的實現細節卻是大同小異[8][9]。表1列舉了幾個知名網站中 OAuth 2.0實現方式。

表1 知名網站的OAuth 2.0實現

Tab.1 OAuth 2.0 implementation of well known websites

可以看出,這些廠商的OAuth 2.0服務大多數都支持授權碼形式的授權許可和刷性令牌的操作,卻都不支持用戶密碼憑證形式的授權許可,而且其客戶端的認證方式大多限于Basic和POST方式。

依據OAuth 2.0協議流程,通過授權碼形式的授權許可獲取訪問令牌,從而向客戶端提供訪問受保護資源的能力,并支持刷新令牌操作,使客戶端在得知訪問令牌失效之后,可使用刷新令牌再度獲取訪問令牌。為保證OAuth 2.0應用的安全性,在設計時重點考慮以下環節的技術實現方案:

(1)全站配置HTTPS。可以使用Nginx為相關域名配置SSL證書,并將相關域名的HTTP訪問請求自動重定向到HTTPS請求,以保證請求數據在網絡傳輸過程中的安全性。

(2)客戶端回調URI的驗證。

(3)訪問令牌中包含的授權信息驗證。解決該問題的關鍵在于,客戶端注冊時授權服務器須在持久化的關系型數據庫中記錄其填寫的回調URI,并在客戶端獲取授權碼和訪問令牌的時候,充分驗證其請求參數中的回調 URI。

(4)訪問令牌的訪問范圍和訪問有效期驗證。這些問題均由訪問令牌的易變性產生。為了保證訪問令牌在協議請求過程中的穩定性和可用性,OAuth 2.0 應用開發者可以在應用中引入 Redis 內存數據庫,將訪問令牌和其授權信息存儲在 Redis 中,并為其設置一定的有效期。授權服務器和資源服務器就可以通過共同操作Redis數據庫,達到同時限制客戶端訪問令牌(刷新令牌)的目的。

總體設計架構如圖2所示。

圖2 基于OAuth2.0的總體設計架構圖

其中,Nginx服務器負責配置全站HTTPS,并實現對授權服務器和資源服務器的反向代理。授權服務器負責接收來自Nginx的客戶端認證授權請求,授予客戶端授權碼和訪問令牌(刷新令牌)。資源服務器負責接受客戶端攜帶訪問令牌的請求,驗證其訪問令牌的正確性,并響應其一定范圍內的受保護資源請求。MySQL 數據庫負責存儲第三方應用數據和用戶信息數據。Redis 數據庫負責存儲帶有訪問范圍和訪問有效期的客戶端授權碼和訪問令牌(刷新令牌)。

3 存在的問題

上述實現方案存在一個問題:由于OAuth 2.0是基于用戶代理重定向的協議,這決定了客戶端和OAuth 2.0認證授權服務只能通過 HTTP 重定向來交換數據,這使得客戶端應用在授權登錄之后,仍滯留著用戶未登錄之前的頁面,從而導致較差的用戶體驗。具體表現為:當第三方應用登錄成功之后,在瀏覽器中會存在兩個歷史標簽頁,其中第一個標簽頁是用戶未登錄之前的頁面,另一個標簽頁則是用戶登錄之后的頁面。

4 方案優化策略

產生登錄前頁面滯留的問題根本原因在于OAuth 2.0協議流程中繁瑣的用戶代理重定向,導致了第三方應用在啟動協議流程時發起的請求無法在協議流程的末尾時恰當地接收OAuth 2.0應用回傳的數據。一種合適解決辦法是引入一種可在客戶端和服務端之間建立雙向通訊的消息監聽機制,在授權過程中根據監聽到的第三方應用的消息回傳事件做出相應的處理。WebSocket 就是滿足以上需求的一種支持全工雙向通訊的網絡協議,目前主流瀏覽器都已經支持WebSocket[10]。優化后的設計方案如圖3所示。

該方案基于原有OAuth 2.0協議交互模式,在第三方應用的客戶端和服務端建立WebSocket連接。若第三方應用服務端在接收到來自OAuth Server的返回數據,第三方應用則會向其客戶端發送一條消息。第三方應用客戶端始終處于監聽其服務端消息的狀態,若接收到一條消息,則表示OAuth Server向第三方應用返回數據成功。通過在第三方應用客戶端和服務端之間建立WebSocket連接,第三方應用便可以快速且不受限制地得知OAuth Server對第三方應用請求的響應狀態,進而采取相應的動作以消除滯留的登錄之前的網頁。

圖3 優化方案原理圖

5 結論

基于OAuth 2.0協議規范設計了一個基于用戶信息為中心數據的OAuth 2.0認證授權應用框架,分析了由于OAuth 2.0協議的機制原因導致的用戶在授權登錄過程中出現的歷史頁面滯留問題,并給出一個合理可行的優化方案,即通過引入雙向通訊 WebSocket 技術來簡化常規應用中OAuth 2.0協議的開發流程。本設計方案旨在為使用OAuth2.0協議的開發者提供參考。

[1] 時子慶, 劉金蘭, 譚曉華. 基于OAuth2.0的認證授權技術[J].計算機系統應用, 2012年03期: 260-264.

[2] Microsoft. RFC 6479-2012 The OAuth 2.0 Authorization Framework[S]. ISSN: 2070-1721.

[3] MTI Systems. RFC 6750-2012. The OAuth 2.0 Authorization Framework: Bearer Token Usage[S]. ISSN: 2070-1721.

[4] 微信. 微信公眾平臺開發者文檔[OL]. (2017-05-05). https://mp.weixin.qq.com/wiki/home.

[5] Google. Using OAuth 2.0 to Access Google APIs[OL](2017-05-05). https://developers.google.com/identity/protocols/OAuth2.

[6] 豆瓣. 了解Auth2.0[OL]. (2017-05-05).https://developers. douban.com/wiki/?title=oauth2.

[7] 維基百科. OAuth[OL]. (2017-01-27). https://zh.wikipedia. org/zh-hans/OAuth.

[8] 魏成坤, 劉向東, 石兆軍. 基于OAuth2.0的認證授權技術研究[J]. 信息網絡安全, 2016年09期: 6-11.

[9] 盧慧鋒, 趙文濤, 孫志峰, 游超. 社會化網絡服務中OAuth2.0的應用研究與實現[J]. 計算機應用. 2014, 34(S1): 50-54.

[10] Google. RFC 6455-2011. The WebSocket Protocol[S]. ISSN 2070-1721.

Design and Optimization of Authentication and Authorization Scheme Based on OAuth2.0 Protocol

WU De, YING Yi, MAO Dao-he

(College of Computer Science and Engineering, Sanjiang University, Nanjing, Jiangsu 210012, China)

The OAuth 2.0 is a certification of authorization protocol defined in the RFC-6749 specification document published by the Internet Engineering Task Force in October 2012. The OAuth 2.0 is a kind of open authorization framework based on HTTP redirection implementation, which allows the third party applications to access the user’s specific resources stored on a web site without having to provide the user name and password to the third party applications. The application of OAuth 2.0 protocol highly promotes the user experience of WEB application. In order to deeply study the working principle of OAuth 2.0 protocol, an open authorization application framework is designed using Nginx server, MySQL and Redis database. At the same time, the deficiencies of OAuth 2.0 protocol in the authorization process are pointed out, and an optimization solution based on WebSocket monitoring mechanism is presented which provides reference for the development of authentication authorization application.

RFC-6479; OAuth 2.0; Authentication; Authorization

TP391.41

A

10.3969/j.issn.1003-6970.2018.10.003

江蘇省現代教育技術課題(批準號:2017-R-59217)、江蘇省高等學校自然科學研究項目(批準號:17KJB520033)

吳德(1978-),男,講師,主要研究方向:數據挖掘與智能計算;應毅(1979-),男,副教授,主要研究方向:大數據與云計算;毛道鶴(1994-),男,工程師,主要研究方向:Java應用開發。

吳德,應毅,毛道鶴. 基于OAuth2.0的認證授權方案設計與優化[J]. 軟件,2018,39(10):10-13

猜你喜歡
資源用戶
讓有限的“資源”更有效
基礎教育資源展示
一樣的資源,不一樣的收獲
資源回收
資源再生 歡迎訂閱
資源再生(2017年3期)2017-06-01 12:20:59
關注用戶
商用汽車(2016年11期)2016-12-19 01:20:16
關注用戶
商用汽車(2016年6期)2016-06-29 09:18:54
關注用戶
商用汽車(2016年4期)2016-05-09 01:23:12
Camera360:拍出5億用戶
創業家(2015年10期)2015-02-27 07:55:08
100萬用戶
創業家(2015年10期)2015-02-27 07:54:39
主站蜘蛛池模板: 国产高清又黄又嫩的免费视频网站| 少妇精品网站| 无码'专区第一页| 久久99久久无码毛片一区二区| 91精品在线视频观看| 青草视频网站在线观看| 久久6免费视频| www.狠狠| 欧美a在线看| 一区二区自拍| 亚洲最黄视频| 暴力调教一区二区三区| 人妻中文字幕无码久久一区| 热re99久久精品国99热| …亚洲 欧洲 另类 春色| 伊人婷婷色香五月综合缴缴情 | 91精品综合| 成年人视频一区二区| 免费视频在线2021入口| 欧美爱爱网| 久久国产精品电影| 色国产视频| 久99久热只有精品国产15| 欧美亚洲网| 成人福利在线观看| 青青草国产一区二区三区| 日韩第九页| 欧美日韩国产在线人成app| 久久综合伊人77777| 亚洲中久无码永久在线观看软件| 日韩精品无码一级毛片免费| 亚洲精品自拍区在线观看| 国产99视频精品免费视频7| 精品三级网站| 亚洲成a人在线播放www| 欧美yw精品日本国产精品| 色综合日本| 最新日韩AV网址在线观看| 亚洲日韩日本中文在线| 亚洲精品国产日韩无码AV永久免费网 | 成人年鲁鲁在线观看视频| 国产另类视频| 日韩美毛片| 2021精品国产自在现线看| 精品国产香蕉在线播出| 91麻豆国产视频| 亚洲AV电影不卡在线观看| 91精品福利自产拍在线观看| 亚洲免费黄色网| 青青草原国产| 国内精品自在欧美一区| 精品五夜婷香蕉国产线看观看| 亚洲人成网站日本片| 超清人妻系列无码专区| 美女被操黄色视频网站| 国产又爽又黄无遮挡免费观看| 国产乱子伦无码精品小说| 99伊人精品| 国产精品无码影视久久久久久久| 成人国产三级在线播放| 尤物特级无码毛片免费| 亚洲欧美色中文字幕| 日韩国产高清无码| 人妻精品久久无码区| 欧美色伊人| 欧美成一级| 国产AV无码专区亚洲精品网站| 亚洲精品成人7777在线观看| 国产成人亚洲精品无码电影| 国产哺乳奶水91在线播放| 欧美三级自拍| 国产永久在线观看| 国产成人你懂的在线观看| 亚洲福利片无码最新在线播放| 中文字幕免费播放| 国产亚洲视频免费播放| 一本久道久综合久久鬼色| 黄色三级网站免费| 国产超碰在线观看| 欧美日韩国产成人高清视频| 欧美色亚洲| 极品性荡少妇一区二区色欲|