亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Token的身份認(rèn)證在高校實訓(xùn)互動平臺中的應(yīng)用研究

        2018-09-17 03:12:38鄒軍國
        無線互聯(lián)科技 2018年17期
        關(guān)鍵詞:令牌用戶名服務(wù)端

        鄒軍國

        (滁州職業(yè)技術(shù)學(xué)院,安徽 滁州 239000)

        加強(qiáng)實訓(xùn)實踐教學(xué)是高職院校技能型人才培養(yǎng)的重要手段,目前各高職院校對實訓(xùn)環(huán)節(jié)管理相對缺失或滯后,構(gòu)建一種實訓(xùn)互動平臺迫在眉睫。隨著互聯(lián)網(wǎng)的快速發(fā)展,實訓(xùn)互動平臺僅僅實現(xiàn)Web應(yīng)用端已經(jīng)無法滿足用戶需求。我們還需要實現(xiàn)移動Web、微信小程序以及移動APP等多用戶端于一體的實訓(xùn)交互平臺。在這些多用戶端的系統(tǒng)平臺中,傳統(tǒng)的Web應(yīng)用所采用的將登錄信息存儲在Cookie,Session或者本地數(shù)據(jù)文件中實現(xiàn)用戶身份認(rèn)證已經(jīng)無法滿足需求,并且這些方式還容易造成信息被截取等安全性問題。針對上述問題,我們在實訓(xùn)互動平臺開發(fā)中采用Token(通常翻譯為令牌)的身份認(rèn)證是一種比較安全的方式。用戶在登錄時,應(yīng)用程序調(diào)用獲取令牌的接口,客戶端將用戶名和密碼以請求的方式提交給服務(wù)端程序與數(shù)據(jù)庫中用戶信息進(jìn)行匹配,成功則生成令牌。在令牌中還可以包含如這個令牌屬于誰、這個令牌的有效期是多久、這個令牌當(dāng)前登錄的客戶端類型以及設(shè)備ID等信息。在以后用戶使用過程中都通過令牌的方式請求數(shù)據(jù)和資源,系統(tǒng)根據(jù)令牌的有效性將有效的數(shù)據(jù)響應(yīng)給用戶。

        1 傳統(tǒng)Web身份認(rèn)證技術(shù)

        目前,絕大多數(shù)應(yīng)用程序都是基于一種無狀態(tài)的HTTP協(xié)議互聯(lián)網(wǎng)應(yīng)用,它不能存儲登錄用戶信息[1]。用戶在登錄使用用戶名和密碼輸入后驗證登錄,每次請求服務(wù)器上的應(yīng)用程序的時候都需要將用戶名和密碼提交服務(wù)器進(jìn)行認(rèn)證后再響應(yīng)數(shù)據(jù)給用戶,但是這些都可能對應(yīng)用程序的安全性提出了挑戰(zhàn)。

        隨著技術(shù)的發(fā)展,開發(fā)人員逐漸通過Cookie和Session這兩種技術(shù)就解決了HTTP的無狀態(tài)問題,可將用戶身份信息記錄在Cookie和Session中以解決身份認(rèn)證問題。下面介紹一下這種身份認(rèn)證模式的實現(xiàn)原理:用戶首先使用用戶名和密碼以及驗證碼等信息登錄,在登錄時創(chuàng)建一個Session對象并生成唯一ID,將其存儲在服務(wù)器端來記錄用戶登錄的身份信息,然后將sessionid返回并存儲在客戶端的Cookie中,這樣就在客戶端與服務(wù)器端之間開始了一次會話,直到關(guān)閉瀏覽器或者說是關(guān)閉整個應(yīng)用程序后會話才結(jié)束。在會話有效期內(nèi)每次客戶端向服務(wù)器端請求數(shù)據(jù)的時候就將在客戶端使用Cookie存儲的sessionid發(fā)送到服務(wù)器端,服務(wù)器端根據(jù)sessionid與服務(wù)器端存儲的Session中的ID進(jìn)行比較,如果一致則響應(yīng)用戶請求并返回數(shù)據(jù),否則通知用戶未通過身份認(rèn)證無權(quán)訪問資源。為了安全我們還可以將客戶端IP地址和系統(tǒng)生成的隨機(jī)碼存儲在Cookie和Session中,在用戶請求服務(wù)器進(jìn)行身份認(rèn)證時可通過比對IP和隨機(jī)碼來增強(qiáng)系統(tǒng)的安全性。當(dāng)然也可以使用RSA等加密算法來對存儲的信息進(jìn)行加密,確保系統(tǒng)安全。

        上述采用Cookie和Session的會話模式確實解決了身份認(rèn)證問題,但是這種模式依然存在很多問題,并且隨著科技的發(fā)展和人們對用戶體驗的需求,一個企業(yè)級應(yīng)用程序不僅僅包括PC端的桌面程序和Web程序,還必須提供手機(jī)APP和WAP端等。這些都對原來的身份認(rèn)證模式提出了挑戰(zhàn),也暴露出很多缺點,具體分析如下。(1)Session:每次認(rèn)證用戶發(fā)起請求時,服務(wù)器需要去創(chuàng)建一個記錄來存儲信息。當(dāng)越來越多的用戶發(fā)請求時,內(nèi)存的開銷也會不斷增加。(2)可擴(kuò)展性:在服務(wù)端的內(nèi)存中使用Session存儲登錄信息,伴隨而來的是可擴(kuò)展性問題[2]。(3)跨域資源共享(Cross-Origin Resource Sharing,CORS),當(dāng)我們需要讓數(shù)據(jù)跨多臺移動設(shè)備上使用時,跨域資源的共享會是一個讓人頭疼的問題。在使用Ajax抓取另一個域的資源,就會出現(xiàn)禁止請求資源情況。(4)跨站請求偽造(Cross Site request forgery,CSRF),如果用戶在訪問系統(tǒng)時,其他用戶很容易偽造請求致使系統(tǒng)收到跨站請求偽造的攻擊。在這些問題中,可擴(kuò)展性是最突出的。因此我們有必要去尋求一種更有行之有效的方法[3]。

        2 基于Token的身份認(rèn)證原理

        高校實訓(xùn)互動平臺是集Web端、移動Web端、微信小程序和移動APP端等于一體的多用戶端系統(tǒng),為了滿足需求并解決Cookie和Session會話模式的身份認(rèn)證的不足,我們尋找一種新的身份認(rèn)證模式即Token身份認(rèn)證模型,就如古時候有些軍隊里傳令官手持將軍的令牌去調(diào)動部隊一樣,采用這種令牌的機(jī)制去處理身份認(rèn)證問題。

        基于Token身份認(rèn)證技術(shù)就無須在客戶端或服務(wù)端存儲大量用戶名密碼等信息。不僅解決了有關(guān)敏感用戶信息存儲的問題,也解決了Session認(rèn)證所造成的過多占用服務(wù)端內(nèi)存資源的問題,而且服務(wù)端無需考慮用戶是否已登錄[4]。下面具體介紹以下基于Token的身份認(rèn)證過程:(1)用戶可使用不同客戶端輸入用戶名和密碼并發(fā)送請求到服務(wù)端。(2)服務(wù)端接收請求后查詢數(shù)據(jù)庫中用戶信息并驗證請求中的用戶名和密碼合法性。(3)驗證通過后,服務(wù)端使用加密算法簽發(fā)令牌,再將令牌響應(yīng)給客戶端。(4)客戶端接收令牌后將它存儲在客戶端,在H5規(guī)范中可存儲Cookie或Local Storage對象中,而在Android系統(tǒng)中也可存儲Share Preference對象中。(5)之后客戶端每次請求服務(wù)端資源時都須帶著服簽發(fā)的加密令牌,驗證令牌的合法性,如果成功,根據(jù)用戶權(quán)限向客戶端響應(yīng)數(shù)據(jù)。

        每次發(fā)送請求時都需要將Token放在HTTP頭部發(fā)送到服務(wù)端,以保證HTTP請求無狀態(tài)。通過設(shè)置服務(wù)器屬性Access-Control-Allow-Origin:*,讓服務(wù)器能接受到來自所有域的請求[5]。需要注意的是,在ACAO頭部標(biāo)明(designating)*時,不得帶有像HTTP認(rèn)證,客戶端SSL證書和cookies的證書。

        3 實訓(xùn)互動平臺身份認(rèn)證解決方案

        設(shè)計與開發(fā)高校實訓(xùn)互動平臺項目中,我們搭建了一個輕量級微服務(wù)架構(gòu),使用Spring Boot作為微服務(wù)開發(fā)框架,使用zookeeper來注冊微服務(wù),通過Node.js將請求轉(zhuǎn)發(fā)到Tomcat上,從而實現(xiàn)“反向代理”。該平臺分為后端和前端兩個部分,后端主要包括后臺管理端和Restful服務(wù)端,前端主要包括PC端Web程序、Android端APP、iOS端APP以及微信小程序等多種客戶端。在這些不同程序之間必須建立統(tǒng)一的身份認(rèn)證系統(tǒng)。下面著重介紹在實訓(xùn)互動平臺的身份認(rèn)證系統(tǒng)中核心部分如何設(shè)計實現(xiàn)。

        3.1 令牌設(shè)計

        高校實訓(xùn)互動平臺的身份認(rèn)證采用的是基于Token的身份認(rèn)證,顯然Token(令牌)如何設(shè)計是整個身份認(rèn)證系統(tǒng)中最重要的環(huán)節(jié),針對高校實訓(xùn)互動平臺需求的特點對Token進(jìn)行了詳細(xì)規(guī)劃和設(shè)計,具體令牌構(gòu)成主要包括用戶名、用戶ID、登錄客戶端類型、時間戳和過期時間等相關(guān)信息。項目中我們將用戶名、用戶ID和登錄客戶端類型等信息作為令牌的用戶基本信息部分,將時間戳和令牌過期時間作為隨機(jī)信息部分。首先我們介紹一下用戶基本信息部分的具體格式,將信息以JSON的格式組合起來,再使用BASE64編碼進(jìn)行加密和解密。具體格式舉例如下:

        以上面格式構(gòu)成用戶基本信息為例,首先將JSON數(shù)據(jù)格式轉(zhuǎn)換為字符串?dāng)?shù)據(jù)后使用base64編碼進(jìn)行加密,加密后結(jié)果如下:

        與用戶基本信息相比,隨機(jī)信息主要是用于增加令牌的隨機(jī)性和提高安全性。隨機(jī)信息部分主要由時間戳和過期時間組成,用戶在客戶端使用用戶名和密碼進(jìn)行第一次登錄時,需驗證一下請求參數(shù)中的時間戳與被請求服務(wù)器的時間是否一致,誤差我們設(shè)定在保持合理范圍內(nèi)即可,一般為5 min,驗證是否匹配,匹配則說明是合理登錄。之后我們將時間戳和過期時間使用HS256算法進(jìn)行加密,具體隨機(jī)信息格式如下:

        接下來將隨機(jī)信息轉(zhuǎn)換為字符串格式后使用HS256算法進(jìn)行加密,加密結(jié)果如下:

        上面也說了令牌主要是由用戶基本信息和隨機(jī)信息兩部分組成,這兩部分信息中間使用“.”隔開,最后得出上述例子的令牌如下:

        這些令牌由服務(wù)端身份認(rèn)證服務(wù)生成,響應(yīng)到客戶端使用Cookies存儲在客戶端。對于整個身份認(rèn)證過程最重要的主要是登錄和請求服務(wù)端資源的過程,下面對這兩個過程進(jìn)行說明。

        3.2 登錄過程

        在高校實訓(xùn)互動平臺中設(shè)定了部門實訓(xùn)管理員、學(xué)校實訓(xùn)管理員、校內(nèi)實訓(xùn)指導(dǎo)教師、校外實訓(xùn)指導(dǎo)教師和學(xué)生等角色。不同角色擁有不同的權(quán)限,通過客戶端登錄后才能請求到服務(wù)端相應(yīng)資源。用戶登錄是基于令牌身份認(rèn)證的核心功能。具體登錄過程時序如圖1所示。

        高校互動實訓(xùn)平臺中基于令牌登錄過程如下:第一次登錄時,用戶通過客戶端輸入用戶名和密碼通過POST請求發(fā)送到登錄控制器(即Login Controller);登錄控制器調(diào)用認(rèn)證服務(wù),認(rèn)證服務(wù)通過用戶信息服務(wù)獲取用戶信息并驗證用戶名和密碼準(zhǔn)確性,如果驗證通過則生產(chǎn)令牌,具體令牌格式已經(jīng)在令牌設(shè)計小節(jié)中做了詳細(xì)描述;認(rèn)證服務(wù)將驗證結(jié)果返回給登錄控制器,登錄控制器將令牌設(shè)置到響應(yīng)對象中返回給客戶端;客戶端通過本地存儲技術(shù)將令牌存儲在本地,以便于請求服務(wù)端資源時使用。

        3.3 請求資源過程

        客戶端與服務(wù)端交互主要是通過HTTP請求實現(xiàn)的,在HTTP請求中核心部分就是請求資源過程,也是用戶與服務(wù)端數(shù)據(jù)交互過程。每次客戶端提交給服務(wù)端的請求都需要經(jīng)過認(rèn)證服務(wù)進(jìn)行身份合法性認(rèn)證之后才能響應(yīng)相應(yīng)資源給用戶。具體基于令牌的請求資源過程時序如圖2所示。

        圖1 登錄過程時序

        圖2 請求資源過程時序

        在高校實訓(xùn)互動平臺中請求資源具體過程如下:用戶請求任何資源時首先將請求提交給對應(yīng)的資源控制器,再調(diào)用身份認(rèn)證服務(wù)進(jìn)行身份認(rèn)證;認(rèn)證服務(wù)通過請求對象查找到請求對象中的令牌信息,再驗證令牌的合法性并進(jìn)行角色判斷;確認(rèn)了令牌合法性和對應(yīng)角色之后再請求對應(yīng)的資源服務(wù)獲取用戶所需資源,并返回結(jié)果給資源控制器,再響應(yīng)給用戶。

        4 基于令牌認(rèn)證方案的優(yōu)勢

        基于Token身份認(rèn)證模式與之前描述的傳統(tǒng)身份認(rèn)證技術(shù)進(jìn)行比較。首先,采用Token認(rèn)證模式進(jìn)行用戶認(rèn)證,則用戶信息不用存儲在Session中即使用戶量大時也不會造成擁堵。其次,當(dāng)用戶請求資源時發(fā)送的是令牌而不是Cookie中存儲的用戶名和密碼這樣敏感信息,從而有效防止CSRF[6]。再次,在可擴(kuò)展性方面Token能夠創(chuàng)建與其他應(yīng)用共享權(quán)限的程序。能通過一個帳號將所有應(yīng)用程序關(guān)聯(lián)起來,實現(xiàn)單點登錄,登錄成功后即可使用該應(yīng)用程序的部分功能。最后,在多平臺跨域方面,也就是CORS問題,對應(yīng)用程序和服務(wù)進(jìn)行擴(kuò)展的時候,可以加入各種設(shè)備和應(yīng)用程序。只要用戶有一個通過了驗證的Token,數(shù)據(jù)和資源就能夠在任何域上被請求到。正因為這些優(yōu)勢我們在跨平臺開發(fā)中選用Token去解決身份認(rèn)證問題。

        5 結(jié)語

        本文通過介紹傳統(tǒng)Web認(rèn)證技術(shù)基礎(chǔ)上描述基于Token的身份認(rèn)證模式的原理,從而著重介紹了高校實訓(xùn)互動平臺中多客戶端身份認(rèn)證解決方案。借助令牌設(shè)計、登錄過程設(shè)計和請求資源過程設(shè)計3個方面闡述了在實訓(xùn)互動平臺中是如何解決身份認(rèn)證問題,該解決方案對其他多客戶端平臺開發(fā)也有非常寶貴的借鑒意義。

        猜你喜歡
        令牌用戶名服務(wù)端
        《護(hù)士進(jìn)修雜志》投稿程序
        稱金塊
        基于路由和QoS令牌桶的集中式限速網(wǎng)關(guān)
        動態(tài)令牌分配的TCSN多級令牌桶流量監(jiān)管算法
        云存儲中基于相似性的客戶-服務(wù)端雙端數(shù)據(jù)去重方法
        新時期《移動Web服務(wù)端開發(fā)》課程教學(xué)改革的研究
        在Windows Server 2008上創(chuàng)建應(yīng)用
        機(jī)智的快遞員
        故事會(2017年17期)2017-09-04 17:36:42
        令牌在智能小區(qū)訪客系統(tǒng)的應(yīng)用
        科技傳播(2011年10期)2011-06-14 02:29:04
        “鴿子”玩升級 黑你沒商量
        日韩精人妻无码一区二区三区| 中文字幕肉感巨大的乳专区| 制服丝袜人妻中文字幕在线| 男女好痛好深好爽视频一区| 国产精品自产拍av在线| 色大全全免费网站久久 | 曝光无码有码视频专区| 无码久久流水呻吟| 亚洲精品乱码久久麻豆| 在线免费观看一区二区| 熟妇人妻av中文字幕老熟妇| 久久精品无码专区东京热| 亚洲黄色大片在线观看| 中文有码亚洲制服av片| 日本少妇被黑人xxxxx| 亚洲欧洲日产国码久在线观看 | 午夜高清福利| 狼人狠狠干首页综合网| 久久久久av综合网成人 | 精品国产看高清国产毛片| 中文字幕av人妻一区二区| av影片在线免费观看| 疯狂撞击丝袜人妻| 四虎精品国产一区二区三区 | 国产不卡在线视频观看| 正在播放东北夫妻内射| 亚洲VA中文字幕欧美VA丝袜 | 丰满人妻猛进入中文字幕| 水蜜桃精品一二三| 国产a级精精彩大片免费看| 在线观看av不卡 一区二区三区| 欧美国产激情二区三区| 伊人色综合九久久天天蜜桃| 高跟丝袜一区二区三区| 91精品国产综合久久久蜜| 老少配老妇老熟女中文普通话| 久久精品免费无码区| av人妻在线一区二区三区| 亚洲av精品一区二区三区| 国产一品道av在线一二三区| 国产熟女乱综合一区二区三区|