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

基于Spring和OAuth2.0的第三方授權框架

2017-03-29 04:53:00
計算機技術與發展 2017年3期
關鍵詞:頁面資源用戶

劉 姚

(南京郵電大學 通信與信息工程學院,江蘇 南京 210000)

基于Spring和OAuth2.0的第三方授權框架

劉 姚

(南京郵電大學 通信與信息工程學院,江蘇 南京 210000)

OAuth2.0是一個開放標準的第三方授權協議,允許用戶授權第三方平臺獲取在某一網站上存儲的用戶個人資源,而無需將用戶名和密碼提供給第三方平臺。這個協議的主要作用就是定義了一個標準協議,允許一個Web或APP在用戶授權下訪問用戶的隱私數據而無須了解用戶的賬號信息,這些數據可以存儲在諸如微信、支付寶中。Spring Security For OAuth 2.0為OAuth2.0的軟件實現提供了一個開源Java庫,廣泛用于基于Spring框架的Web站點上,與Spring Security框架無縫銜接,易于Web后端服務器的升級,簡化了基于Web的OAuth2.0協議的開發。文中分析了OAuth2.0協議細則以及關鍵流程,重點闡述了Spring Security For OAuth 2.0的優點、應用以及服務器配置,并以此為基礎快速構建OAuth2.0服務器軟件平臺。該協議庫具有易于使用、易于維護與使用安全等特點,目前已經廣泛應用在互聯網以及金融等領域。

Web安全;Spring Security;OAuth2.0;開放平臺認證

0 引 言

早期的互聯網平臺與應用系統是相互獨立的,各個平臺與系統之間不具有數據共享功能[1]。一個平臺或者一個系統只能使用自己的系統資源,同時也不可以訪問其他平臺的資源。隨著互聯網的迅速發展,各個平臺之間的聯系日益密切,互聯網平臺之間的數據共享亟待解決。

OAuth協議為資源服務器,第三方平臺與用戶之間提供了一個安全、開放并且簡易的協議標準[2]。任何第三方平臺均可以使用OAuth認證服務在用戶的許可下獲取用戶所允許的用戶所屬互聯網資源。

Spring是一個輕量級的JAVAEE框架,提供了一個標準的IOC容器[3],全面支持AOP開發等特點,在企業應用開發與Web網站開發中占有重要地位。Spring Security是Spring的一個子項目,在Web安全方面應用廣泛。Spring Security對OAuth協議提供了完整的支持與整合[4]。考慮到OAuth2.0協議開發的復雜性,文中以Spring Security開源框架為基礎開發第三方授權軟件平臺,具有開發周期短、代碼量少、實用性強等特點。

1 OAuth2.0協議簡介

OAuth2.0是OAuth的下一代開放平臺授權協議,OAuth旨在增加為開發Web應用程序、桌面應用程序、移動電話和客廳設備的簡易性。并且作為標準協議入駐IETF[5]。

OAuth為客戶端提供了一種代表資源擁有者訪問受保護資源的方法。在客戶端訪問受保護資源之前,它必須先從資源擁有者獲取授權(訪問許可),然后用訪問許可交換訪問令牌(Access Token,包含許可的作用域、持續時間和其他屬性等信息)。客戶端通過向資源服務器出示訪問令牌來訪問受保護資源[6]。

在OAuth2.0協議流的定義下,第三方獲取資源必須按照獲取認證、獲取訪問資源令牌、通過令牌獲取指定資源的順序。其工作流順序如圖1所示[7]。

圖1 OAuth抽象協議流

(A)客戶端向資源服務器(可以是OAuth服務器)請求用戶(資源所有者)授權。

(B)客戶端獲得授權,表現為資源所有者的授權憑據,可以是OAuth2.0所描述的返回類型,也可以是擴展類型。

(C)客戶端通過使用授權服務器進行身份驗證和提交授權授予請求訪問令牌。

(D)授權服務器對客戶端進行身份驗證和驗證授權授予,如果有效,會發出一個訪問令牌。

(E)客戶端從資源服務器請求受保護的資源,并使用訪問令牌進行身份驗證。

(F)資源服務器驗證訪問令牌,如果有效,則對請求進行服務。

OAuth2.0中的資源所有者負責給客戶端授權。客戶端應用代表資源所有者獲取受保護的資源。資源服務器負責提供這些受保護的資源。授權服務器負責為客戶端應用提供Access Token[8]。

OAuth2.0包含四種授權類型:授權碼(Web應用使用)、隱式授權(基于瀏覽器或移動應用)、用戶密碼方式與客戶端應用憑證(基于應用)授權方式[9]。

OAuth2.0采用短期有效形式的令牌,可以通過刷新令牌來保持令牌的長期使用,其數據格式如下所示[10]:

{

"access_token":"1CutcHUDNjkisDkxIUvaA",

"token_type":"bearer",

"expires_in":3600,

"refresh_token":"vAgd2IOpQ9XG0Dx1E2KWAE",

}

2 Spring對OAuth2.0的支持

OAuth2.0有多種實現方案,如php、python、C++與Java等等。Spring基于Java平臺實現,對OAuth2.0進行二次適配。

OAuth2.0包含眾多Java語言實現框架,如Jersey、Apache Oltu、Spring Security OAuth2、Google OAuth2 API等等。Jersey提供了對Java EE標準安全框架的集成,但只提供了客戶端的解決方案。Apache Oltu也是一個較為完善的解決方案,但參考文檔較為復雜,學習成本高。

Spring Security OAuth同時提供了對OAuth1.0與OAuth2.0的支持,支持OAuth2.0協議的所有特性與要求(Authorization Server,Resources Server,Client)。同時與Spring有著良好的集成,相比其他OAuth2.0的Java語言實現具有較大優勢。基于Spring的注解與xml配置,使得OAuth2.0協議能夠完全融合于Spring框架[11]。

即使OAuth2.0協議簡化了開放平臺授權,但仍然存在一定的工作量與復雜度。Spring框架整合OAuth2.0協議,極大地簡化了OAuth2.0協議實現的復雜度。Spring框架中的Spring Security組件用于實現用戶認證登陸,OAuth2.0用于實現開放平臺授權。兩者結合簡化了OAuth2.0服務器的開發。

OAuth2.0服務端需要提供訪問資源服務器的接口。共需要三個接口:客戶端平臺從資源擁有者(用戶)取得資源授權接口,客戶端根據授權碼向資源服務器獲取Access Token接口,客戶端根據Access Token獲取資源接口。其中需要服務端提供兩個頁面:授權頁面與登陸頁面[12]。

Spring Security組件集成了對OAuth2.0的支持,使得頁面授權邏輯與OAuth2.0的協議邏輯相分離。Spring MVC負責頁面跳轉與展示,Spring Security負責安全認證,OAuth2.0負責客戶端、用戶與服務器之間的關系處理[13]。

3 資源服務器數據分析

通過對個人誠信系統管理的分析,存在資源服務器上的信息包括用戶注冊信息、用戶基本檔案信息與誠信檔案信息三個部分。其中,用戶基本檔案信息與用戶誠信檔案信息為該平臺對外開放的信息。

用戶注冊信息包含用戶ID、用戶名和密碼等關鍵數據。用戶基本檔案包含用戶的信用記錄、信用狀態以及信用得分等。用戶基本檔案記錄著用戶的實名認證等詳細信息。用戶的基本檔案以及誠信檔案信息必須在用戶ID、密碼匹配的情況下才可以被訪問。

4 Spring OAuth2.0系統設計

Spring采用插件化的方法來集成Spring Security與OAuth2.0。構建該系統同時需要引入相應的Spring Security與spring-security-oauth2的jar包。Spring Security通過在xml中配置http節點設置相應URL的訪問權限,采用Spring框架的OAuth2.0的授權管理器。其原理如圖2所示。

圖2 Spring OAuth2.0授權原理

第三方平臺首先嘗試獲取位于資源服務器的資源,若資源是該平臺開放資源,OAuth2 Access Decision Manager會判斷當前第三方是否經過本平臺用戶授權。沒有授權則轉到登陸頁面提示用戶登陸,若已經授權則資源服務器將相應的數據返回給第三方平臺。

同時,Spring提供了基于xml配置的OAuth:authorization-server,該節點用于自動解析創建OAuth2.0應用所需要創建的類與必須的配置項[14]。

OAuth2.0核心流程所需要的數據均保存在認證服務器數據庫中。每一個需要接入的第三方系統都需要在認證服務器注冊用于標示該應用信息,認證服務器的第三方應用信息數據見表1。

框架Spring為OAuth2.0提供了Access Token的實現類JdbcTokenStore,用于實現令牌的存儲。同時令牌擁有有效期,Spring Security提供了令牌刷定時刷新的方法。JdbcTokenStore用于讀寫存在于數據庫中的令牌數據。Access Token數據表包含accesstoken、createtime與expiretime三個字段,分別表示令牌、創建時間與過期時間的詳細信息。

表1 AppInfo應用信息表

在系統設計的最后階段,需要向外部暴露自己的開放接口。該誠信系統只需要暴露兩個開放接口,即調用基本信息接口與調用基本信息擴展的誠信信息接口。

SpringSecurity集成OAuth2.0需要實現的步驟如下:

Spring Authorization Server授權服務器端的配置。該配置用于創建授權服務器相關的支持類。以及與其相關的注解配置,用于配置客戶端詳細服務信息,授權服務器令牌服務,以及授權服務器端點等。

Spring Resource Server的服務端配置。該配置用于創建資源服務器相關的支持類。其作用是提供授權的Servlet過濾器用來保護Web資源。該項配置可以使用基于XML的配置

Spring OAuth2.0 Client的配置,該配置用于創建可以存儲當前請求和上下文環境的Servlet過濾器,用來管理OAuth授權URI的重定向。該項配置可以使用基于XML的配置

5 系統測試

當第三方應用需要使用用戶的個人信息檔案或者個人基本信息檔案時,就可以接入本誠信檔案系統。接著頁面跳轉到授權服務器提供授權頁面。用戶輸入有效的賬戶密碼并同意授權。用戶授權頁面如圖3所示。

圖3 用戶授權頁面

同意授權后,根據客戶端應用提供的回調地址,將當前頁面跳轉到客戶端應用頁面,此時客戶端應用可以根據獲取到的code,再向授權服務器獲取Access Token。授權成功跳轉頁面如圖4所示。

圖4 授權成功跳轉頁面

客戶端應用根據Access Token可以得到的信息如圖5所示。客戶端可以得到用戶所允許的個人基本信息及信用狀態信息。由于篇幅,更多詳細信息未列出。

圖5 獲得用戶信息頁面

6 結束語

基于Spring Security,配置了第三方授權平臺的服務端。完成了基礎的授權功能,實現了用戶資源的第三方平臺授權訪問,保證了第三方授權的安全性。

在框架的支持下,Web服務端開發人員僅僅需要配置等幾個參數就可以完成OAuth2.0服務器的相關協議開發。一定程度上簡化了OAuth2.0協議的應用與開發,有利于OAuth2.0協議在互聯網中的推廣。

[1] 劉大紅,劉 明.第三方應用與開放平臺OAuth認證互連技術研究[J].電腦知識與技術,2012,8(8):5367-5369.

[2] 張衛全,胡志遠.淺析作用于Web2.0安全防范的OpenID和OAuth機制[J].通信管理與技術,2011(2):15-18.

[3] 王春枝,唐俊武.關于IoC模式及輕量級容器的研究[J].湖北工業大學學報,2006,21(4):52-54.

[4] 張 宇,王映輝,張翔南.基于Spring的MVC框架設計與實現[J].計算機工程,2010,36(4):59-62.

[5] Leiba B.Oauth web authorization protocol[J].IEEE Internet Computing,2012,16(1):74-77.

[6] Jones M, Hardt D. The Oauth 2.0 authorization framework:bearer token usage[R].[s.l.]:[s.n.],2012.

[7] Hardt D.The OAuth 2.0 authorization framework[R].[s.l.]:[s.n.],2012.

[8] 張 銳,張建林,孫國忠.多業務系統的統一認證授權研究與設計[J].計算機工程與設計,2009,30(8):1826-1828.

[9] 蔣 緯,馬光思.Spring與其他框架整合及流程分析[J].計算機工程,2007,33(14):79-81.

[10] 莊少燉.基于Spring的輕量級Web框架研究與實現[D].成都:電子科技大學,2009.

[11] 黃道斌.一種基于SPRINGSECURITY的訪問控制方案[J].軟件導刊,2011,10(8):122-123.

[12] 丁振凡.基于Spring Security的Web資源訪問控制[J].宜春學院學報,2012,34(8):71-74.

[13] 陳雄華.Spring 3.x企業應用開發實戰[M].北京:電子工業出版社,2012.

[14] 肖 云.基于Spring Security安全的Web應用開發[J].計算機與現代化,2011(6):158-159.

Investigation on Third Party Authorization System Based on Spring Security and OAuth2.0

LIU Yao

(College of Telecommunications and Information Engineering,Nanjing University of Posts and Telecommunications,Nanjing 210000,China)

OAuth2.0 is a third party authorization protocol of open standard,and allows the user to authorize a third party to obtain a user’s personal resources stored on a Web site without having to provide the user name and password to a third party platform.The main role of this agreement is to define a standard protocol that allows a Web or APP access the private data of the user in the case of authorized,and the data can be stored in areas such as Alipay and WeChat.Spring Security For OAuth 2.0 provides an open source Java library for OAuth2.0 implementations widely used in Web sites based on the Spring framework and Spring Security framework for seamless,easy to upgrade for Web back-end,simplification of the development of Web-based OAuth 2.0.The OAuth2.0 protocol rules as well as the key process are analyzed,and the Spring Security For OAuth 2.0 advantages,applications and server configuration are described,and as a foundation to quickly build the OAuth2.0 server software platform.The protocol library has features of easy to use,easy to maintain and use security,now widely used in the Internet,as well as financial and other fields.

Web security;Spring Security;OAuth2.0;open platform certification

2016-04-25

2016-08-11

時間:2017-02-17

國家自然科學基金資助項目(61271234)

劉 姚(1992-),男,碩士研究生,研究方向為衛星通信技術。

http://www.cnki.net/kcms/detail/61.1450.TP.20170217.1630.054.html

TP39

A

1673-629X(2017)03-0167-04

10.3969/j.issn.1673-629X.2017.03.035

猜你喜歡
頁面資源用戶
大狗熊在睡覺
刷新生活的頁面
保健醫苑(2022年1期)2022-08-30 08:39:14
基礎教育資源展示
一樣的資源,不一樣的收獲
資源回收
資源再生 歡迎訂閱
資源再生(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
如何獲取一億海外用戶
創業家(2015年5期)2015-02-27 07:53:25
主站蜘蛛池模板: 亚洲欧美成aⅴ人在线观看| 亚洲清纯自偷自拍另类专区| 亚洲嫩模喷白浆| 国产资源免费观看| 国产超薄肉色丝袜网站| AV老司机AV天堂| 无码人中文字幕| 国产无码制服丝袜| 免费看av在线网站网址| 日本草草视频在线观看| 精品无码日韩国产不卡av| 中文字幕中文字字幕码一二区| 午夜国产不卡在线观看视频| 亚洲自拍另类| 日本免费新一区视频| JIZZ亚洲国产| 国产无码网站在线观看| 亚洲手机在线| 呦女亚洲一区精品| 在线看国产精品| 乱色熟女综合一区二区| 亚洲成a人在线播放www| 久久一级电影| 国产日本欧美在线观看| 亚洲视频影院| 国产成人亚洲无码淙合青草| av午夜福利一片免费看| 91啦中文字幕| 99偷拍视频精品一区二区| 亚洲成人在线免费观看| 国模极品一区二区三区| 老汉色老汉首页a亚洲| 丝袜无码一区二区三区| 美女无遮挡被啪啪到高潮免费| 欧美一级特黄aaaaaa在线看片| 色婷婷国产精品视频| 成人综合久久综合| 亚洲首页在线观看| 波多野吉衣一区二区三区av| 91精品专区| 国产v精品成人免费视频71pao | 久久永久免费人妻精品| 四虎永久在线精品国产免费| 国产色伊人| 久久精品人人做人人爽97| 嫩草在线视频| 欧美性精品| 亚洲精品图区| 精品伊人久久久香线蕉| 国产成人精品一区二区| 久久久噜噜噜久久中文字幕色伊伊 | 玖玖精品视频在线观看| 亚洲欧美一区二区三区蜜芽| 毛片免费网址| 国产97视频在线| 国产成人资源| 国产91蝌蚪窝| 一级毛片在线播放免费| 国产白浆视频| 国产地址二永久伊甸园| 最新日本中文字幕| 国产地址二永久伊甸园| 国产午夜在线观看视频| 日韩123欧美字幕| 国产精品无码久久久久久| 日本免费一级视频| 欧美黄色网站在线看| 欧美成人看片一区二区三区| 成年A级毛片| 成人a免费α片在线视频网站| 婷婷午夜影院| 欧美中文字幕在线视频| 女同国产精品一区二区| 日韩无码黄色网站| 亚洲最新在线| 中文字幕亚洲另类天堂| 亚洲欧美国产五月天综合| 欧美亚洲综合免费精品高清在线观看 | 欧美一级黄片一区2区| 亚洲AⅤ永久无码精品毛片| 亚洲AV无码乱码在线观看代蜜桃 | 在线欧美日韩国产|