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

        ?

        移動(dòng)互聯(lián)網(wǎng)場(chǎng)景下服務(wù)端Shiro權(quán)限管理研究

        2021-02-25 07:42:56趙志學(xué)朱方洲
        關(guān)鍵詞:客戶端框架服務(wù)器

        趙志學(xué),朱方洲

        (1.安徽省委黨校,安徽 合肥 230022;2.安徽經(jīng)濟(jì)管理學(xué)院,安徽 合肥 230022)

        0 引 言

        網(wǎng)絡(luò)信息安全最重要的是保證用戶合法地對(duì)資源進(jìn)行訪問,防止非法用戶訪問不屬于自己的訪問權(quán)限,以此來保護(hù)信息不受篡改[1]。目前,網(wǎng)絡(luò)攻擊越來越多,利用安全漏洞竊取系統(tǒng)數(shù)據(jù)、非法入侵系統(tǒng)等安全問題嚴(yán)重影響了各個(gè)系統(tǒng)的穩(wěn)定運(yùn)行,致使業(yè)務(wù)無法正常運(yùn)營(yíng),給政府、企業(yè)和個(gè)人帶來很大的損失[2]。為了解決上述問題,訪問控制機(jī)制和對(duì)應(yīng)的權(quán)限管理應(yīng)運(yùn)而生。訪問控制是從20世紀(jì)60年代后期開始研究,其任務(wù)主要是根據(jù)系統(tǒng)內(nèi)部提供的安全策略和訪問者的身份信息,對(duì)請(qǐng)求訪問的權(quán)限設(shè)置限制和規(guī)則,旨在防止未經(jīng)授權(quán)的用戶訪問系統(tǒng)資源[3]。應(yīng)用比較廣泛的主要有自主訪問控制(DAC)、強(qiáng)制訪問控制(MAC)、基于角色訪問控制模型(RBAC)、基于任務(wù)訪問控制模型(TBAC)和基于屬性訪問控制模型(ABAC)等[4],其中RBAC近年來研究最為廣泛,并以其靈活性與安全性普遍應(yīng)用于許多系統(tǒng)中。隨著互聯(lián)網(wǎng)+政務(wù)服務(wù)、企業(yè)綜合應(yīng)用系統(tǒng)等移動(dòng)應(yīng)用的不斷增加,上述授權(quán)方式顯得繁雜、不靈活、粗糙,在應(yīng)用上不利于應(yīng)用系統(tǒng)的擴(kuò)展和缺乏良好的通用性,為此文章提出了基于Shiro框架的移動(dòng)互聯(lián)網(wǎng)場(chǎng)景下服務(wù)器認(rèn)證授權(quán)方法。

        1 移動(dòng)互聯(lián)網(wǎng)服務(wù)場(chǎng)景中認(rèn)證授權(quán)

        傳統(tǒng)的PC應(yīng)用使用場(chǎng)景客戶端往往是Web瀏覽器,通過瀏覽器發(fā)出訪問服務(wù)器請(qǐng)求,這種方式需要在服務(wù)端保存客戶端的session(會(huì)話),建立session的本質(zhì)就是瀏覽器訪問服務(wù)器時(shí),從服務(wù)器取回一個(gè)cookie,該cookie標(biāo)識(shí)了會(huì)話,而瀏覽器下次訪問服務(wù)器時(shí)再次攜帶該cookie提交給服務(wù)器,服務(wù)器根據(jù)提交的cookie區(qū)別不同的客戶端瀏覽器,達(dá)到保持不同客戶端session的目的,從而維持客戶端與服務(wù)器的無狀態(tài)通信。

        在移動(dòng)互聯(lián)網(wǎng)應(yīng)用場(chǎng)景中,用戶登錄App后,可能過很久才有下次操作,又不便要求用戶反復(fù)登錄賬號(hào)和密碼,無session過期要求。移動(dòng)應(yīng)用場(chǎng)景要求用戶操作便捷,又不降低對(duì)安全性的要求,始終要求用戶提交賬號(hào)和密碼本身就會(huì)帶來丟失信息的風(fēng)險(xiǎn),這就需要使用token的方式來進(jìn)行標(biāo)識(shí)用戶合法身份,客觀上減少賬號(hào)和密碼提交服務(wù)器的次數(shù)。在移動(dòng)應(yīng)用場(chǎng)景中大多數(shù)都是使用原生App操作方式,而在原生App開發(fā)方式中每次使用cookie十分麻煩,技術(shù)上采用了放棄使用cookie的方法。

        2 Shiro框架的體系結(jié)構(gòu)

        現(xiàn)行服務(wù)器場(chǎng)景中一般會(huì)選擇較為成熟的權(quán)限管理框架,如Spring Security框架、Apache的Shiro框架。

        Spring Security功能強(qiáng)大[5-6],但配置繁瑣。Shiro框架相對(duì)于Spring Security框架,具有高度的靈活性、開發(fā)的易用性、代碼的開放性等優(yōu)勢(shì),因此在權(quán)限管理和安全認(rèn)證業(yè)務(wù)場(chǎng)景中得到了廣泛使用。Shiro框架不僅可以應(yīng)用于Java SE場(chǎng)景中的開發(fā),也可以應(yīng)用于Java EE場(chǎng)景中的開發(fā)。同時(shí)Shiro框架與Spring框架也能進(jìn)行很好的整合,這就給開發(fā)者在使用過程中帶來極大的便利。

        互聯(lián)網(wǎng)+政務(wù)服務(wù)系統(tǒng)、企業(yè)級(jí)應(yīng)用系統(tǒng)對(duì)于權(quán)限管理包括兩個(gè)方面:一是認(rèn)證,通過認(rèn)證確認(rèn)用戶賬號(hào)的合法性,用戶提交各類合法的身份信息,服務(wù)端對(duì)身份信息進(jìn)行驗(yàn)證,驗(yàn)證通過允許用戶登錄,驗(yàn)證不通過拒絕用戶登錄。二是授權(quán),通過授權(quán)根據(jù)事先劃分好的權(quán)限資源,用戶身份角色,將對(duì)應(yīng)的權(quán)限分配給合法登錄的用戶,這樣通過驗(yàn)證的用戶就具備訪問某某資源的權(quán)限。

        Shiro框架廣泛支持認(rèn)證和授權(quán)等功能模塊,且提供足夠的API供開發(fā)者定制,這就為政務(wù)系統(tǒng)、企業(yè)級(jí)系統(tǒng)的靈活定制提供可能。Shiro框架主要包括核心功能模塊、支持功能模板,核心功能模塊包含認(rèn)證、授權(quán)、會(huì)話管理、加密四個(gè)部分;支持功能模板包含“Web集成、緩存、并發(fā)、測(cè)試、作為、記住我”六個(gè)部分[7]。具體功能模板如圖1所示。

        圖1 Shiro框架的基本結(jié)構(gòu)

        3 Shiro框架的設(shè)計(jì)思路

        3.1 認(rèn)證授權(quán)過程

        Shiro框架是通過一個(gè)名稱為Subject的主體對(duì)象代表用戶的,該Subject就是一次發(fā)出請(qǐng)求認(rèn)證的對(duì)象,每一次要求認(rèn)證都是通過Subject對(duì)象的Login方法發(fā)給SecurityManager。SecurityManager負(fù)責(zé)所有與安全操作的交互操作,并且實(shí)現(xiàn)對(duì)Subject的管理,它構(gòu)成了Subject請(qǐng)求認(rèn)證和Realm安全數(shù)據(jù)來源之間嫁接的橋梁。Realm是用戶安全數(shù)據(jù)的來源,但并不維護(hù)用戶和權(quán)限的具體信息表,這也是Shiro框架的強(qiáng)大之處,這就使開發(fā)者自己擴(kuò)展用戶權(quán)限信息表成為可能。圖2為Shiro框架的認(rèn)證授權(quán)時(shí)序圖。

        圖2 Shiro框架的認(rèn)證授權(quán)時(shí)序

        認(rèn)證授權(quán)過程首先是用戶提交賬號(hào)和密碼,使用Shiro框架提供的Subject發(fā)起Login請(qǐng)求;Login請(qǐng)求發(fā)送給SecurityManager對(duì)象,SecurityManager根據(jù)提前配置的Authenticator對(duì)賬號(hào)信息執(zhí)行驗(yàn)證;Authenticator對(duì)象可以調(diào)用自定義的Realm對(duì)象執(zhí)行具體的驗(yàn)證,并且可以通過Realm訪問用戶安全信息來源;回調(diào)Realm對(duì)象的doGetAuthenticationInfo()方法,執(zhí)行具體的安全信息認(rèn)證;可以在doGetAuthenticationInfo()方法中獲取證書匹配器,也就是可以在此實(shí)現(xiàn)加密驗(yàn)證;加載一個(gè)具體的加密匹配器;當(dāng)認(rèn)證通過后,Realm可以加載安全信息數(shù)據(jù)來實(shí)現(xiàn)具體的授權(quán)工作,該授權(quán)工作在doGetAuthorizationInfo()方法中實(shí)現(xiàn);最后返回認(rèn)證成功或失敗的結(jié)果。如果認(rèn)證成功,將帶有成功的消息和帶有授權(quán)的用戶返回。

        3.2 鑒權(quán)過程

        當(dāng)用戶成功登錄企業(yè)系統(tǒng)后,該用戶將擁有相應(yīng)的角色和權(quán)限。在用戶訪問具體權(quán)限資源時(shí),Shiro框架將對(duì)該用戶的身份權(quán)限做進(jìn)一步驗(yàn)證。Shiro框架提供了Authorizer組件來實(shí)現(xiàn)用戶的鑒權(quán)工作。圖3為Shiro框架的鑒權(quán)時(shí)序圖。

        圖3 Shiro框架的鑒權(quán)時(shí)序

        鑒權(quán)過程首先用戶訪問某具體的權(quán)限資源,發(fā)起isPermitted()方法的請(qǐng)求,該請(qǐng)求將引起SecurityManager對(duì)象方法isPermitted()的調(diào)用,Shiro框架會(huì)根據(jù)具體的配置信息調(diào)用對(duì)應(yīng)的Authorizer,并在Authorizer中調(diào)用ResolvePermissionRole方法,使用PermissionResolver對(duì)象返回該用戶的權(quán)限集合。繼續(xù)請(qǐng)求是否具備某權(quán)限,根據(jù)返回結(jié)果true或者false,表示是否具備某權(quán)限。最后返回鑒權(quán)結(jié)果。

        4 基于Shiro框架的移動(dòng)互聯(lián)網(wǎng)場(chǎng)景下服務(wù)器認(rèn)證授權(quán)方法

        通過構(gòu)建基于Shiro框架的移動(dòng)互聯(lián)網(wǎng)場(chǎng)景下服務(wù)器認(rèn)證授權(quán)方法,移動(dòng)互聯(lián)場(chǎng)景中服務(wù)器無需保存客戶端cookie的信息,只維持客戶端與服務(wù)器之間的會(huì)話狀態(tài),有效實(shí)現(xiàn)用戶身份認(rèn)證、授權(quán)、加密、會(huì)話管理等功能,構(gòu)建了一個(gè)通用、便捷的安全認(rèn)證框架,使用Shiro就可以高效、安全地完成認(rèn)證、授權(quán)等功能,降低系統(tǒng)成本。

        圖4 基于Shiro框架的移動(dòng)互聯(lián)網(wǎng)場(chǎng)景下服務(wù)器認(rèn)證授權(quán)方法

        4.1 基于HMAC算法的通信方式

        密鑰相關(guān)的哈希運(yùn)算消息認(rèn)證碼(hash-based message authentication code,HMAC)是基于散列的消息認(rèn)證碼[8-9],該方法身份認(rèn)證方式簡(jiǎn)單、安全,且克服了安全證書授權(quán)Radius、Kerberos等協(xié)議的部署復(fù)雜性、開銷過大等問題。在用戶通過安全認(rèn)證后,服務(wù)端將驗(yàn)證密鑰發(fā)給用戶,當(dāng)前該密鑰將由客戶端和服務(wù)端共同持有。每當(dāng)用戶發(fā)送請(qǐng)求給服務(wù)器時(shí),無需再次發(fā)送賬號(hào)和密碼,而是發(fā)送消息和消息摘要到服務(wù)器即可。客戶端消息摘要是由共同持有的密鑰生成,該消息摘要保證了請(qǐng)求信息的唯一性。服務(wù)器端使用共同的密鑰對(duì)消息進(jìn)行驗(yàn)證,驗(yàn)證用戶身份的合法性?;贖MAC算法的關(guān)鍵代碼如下:

        public static byte HmacSHAEncrypt(String encryptText,String encryptKey)throws Exception

        { byte data=encryptKey.getBytes(ENCODING);

        SecretKey secretKey = new SecretKeySpec(data,MAC_NAME);

        Mac mac = Mac.getInstance(MAC_NAME);

        mac.init(secretKey);

        byte text = encryptText.getBytes(ENCODING);

        return mac.doFinal(text);

        }

        }

        4.2 創(chuàng)建無cookie的token

        在Shiro框架中token的作用主要是用于傳遞用戶身份信息,在subject的login方法中需要傳遞token;在認(rèn)證過程中需要調(diào)用token,判斷賬號(hào)和密碼的合法性;在授權(quán)過程中需要調(diào)用token,獲取用戶的身份信息,據(jù)此判斷該用戶該擁有什么權(quán)限。由于用戶的請(qǐng)求信息包含了賬號(hào)和請(qǐng)求信息以及請(qǐng)求信息的摘要。所以該token可以設(shè)計(jì)為如下方式:

        public class MyToken implements AuthenticationToken {

        private String username;

        private Map params;

        private String msgDigest;

        getPrincipal()…//具體省略

        getCredentials ()…//具體省略

        }

        4.3 優(yōu)化AuthorizingRealm

        當(dāng)在Shiro框架中用戶的信息改造成無狀態(tài)的token時(shí),也需要對(duì)AuthorizingRealm進(jìn)行繼承改造,這里實(shí)現(xiàn)自定義Realm。在doGetAuthenticationInfo()方法中使用HMAC加密方案對(duì)用戶發(fā)送至服務(wù)器的請(qǐng)求信息進(jìn)行驗(yàn)證,主要驗(yàn)證消息摘要。如果消息摘要驗(yàn)證通過表示該用戶使用的密鑰為合法密鑰,如果驗(yàn)證不通過則表示該密鑰失效或者過期,從而保證用戶身份的合法性和唯一性。優(yōu)化AuthorizingRealm關(guān)鍵代碼如下:

        public AuthorizingRealm(CacheManager cacheManager,CredentialsMatcher credentialsMatcher) {

        super();

        if (cacheManager != null) {

        setCacheManager(cacheManager);

        }

        if (credentialsMatcher != null) {

        setCredentialsMatcher(credentialsMatcher);

        }

        this.authorizationCachingEnabled = true;

        this.permissionResolver = new WildcardPermissionResolver();

        int instanceNumber = INSTACE_COUNT.getAndIncrement();

        this.authorizationCacheName = getClass().getName() + DEFAULT_AUTHOR_CACHE_SUFFIX;

        if (instanceNumber > 0) {

        this.authorizationCacheName = this.authorizationCacheName + "." + instanceNumber;

        }

        }

        4.4 引入支持無cookie的Filter

        Shiro框架提供了JavaEE中的Filter組件,在Web服務(wù)器啟動(dòng)時(shí)就能加載Filter,該Filter就是Shiro框架的DelegatingFilterProxy,它相當(dāng)于一個(gè)集中的調(diào)度器,所有的請(qǐng)求都將由該Filter來集中調(diào)度。Shiro框架也支持開發(fā)者自定義Filter來實(shí)現(xiàn)對(duì)請(qǐng)求的攔截。通常自定義Filter需要繼承Shiro框架的AccessControlFilter類,并在Spring配置中加入如下代碼:

        其中***Filter表示自定義的Filter,通過該配置就加入到過濾器的隊(duì)列中,當(dāng)請(qǐng)求到來時(shí)將會(huì)自動(dòng)執(zhí)行該Filter完成對(duì)請(qǐng)求的身份驗(yàn)證。另外注意關(guān)閉Shiro框架默認(rèn)的Session。

        4.5 測(cè)試

        以某單位建設(shè)智慧政務(wù)系統(tǒng)為例,驗(yàn)證和測(cè)試基于Shiro框架的移動(dòng)互聯(lián)網(wǎng)場(chǎng)景下服務(wù)器認(rèn)證授權(quán)方法。該政務(wù)系統(tǒng)將基于Shiro框架的移動(dòng)互聯(lián)網(wǎng)場(chǎng)景下服務(wù)器認(rèn)證授權(quán)方法部署到Tomcat上,然后建立相應(yīng)的Android或iOS項(xiàng)目,先從服務(wù)器端使用賬號(hào)和密碼獲取相應(yīng)的HMAC方案中針對(duì)用戶的key,然后再?gòu)目蛻舳酥邪l(fā)送請(qǐng)求信息和消息摘要。測(cè)試合法用戶的認(rèn)證結(jié)果以及非法用戶的認(rèn)證結(jié)果,通過功能對(duì)比測(cè)試,本文方法比目前常用RBAC在資源實(shí)例權(quán)限、新增屏蔽權(quán)限、分層級(jí)ID設(shè)定及微架構(gòu)分庫(kù)設(shè)計(jì)方面有明顯的優(yōu)越性,提高了靈活性、簡(jiǎn)便性、可擴(kuò)展性及安全性(表1)。

        表1 RABC與基于Shiro框架的移動(dòng)互聯(lián)網(wǎng)場(chǎng)景下服務(wù)器認(rèn)證授權(quán)方法功能對(duì)比

        5 結(jié) 論

        使用基于Shiro框架的移動(dòng)互聯(lián)網(wǎng)場(chǎng)景下服務(wù)器認(rèn)證授權(quán)方法大大降低了權(quán)限管理的開發(fā)難度,其本身也具備較高的靈活性和開放性,這就為適應(yīng)移動(dòng)互聯(lián)網(wǎng)服務(wù)器端場(chǎng)景變化進(jìn)行框架改造帶來可能性。文章主要分析了移動(dòng)互聯(lián)網(wǎng)場(chǎng)景中服務(wù)端的設(shè)計(jì)的新要求,客戶端場(chǎng)景的變化促使服務(wù)器端也要隨之變化,這就要求連接服務(wù)端時(shí)放棄使用cookie。該方法可以有效解決移動(dòng)互聯(lián)網(wǎng)這一領(lǐng)域企業(yè)級(jí)應(yīng)用系統(tǒng)的權(quán)限管理需求,大大降低服務(wù)器端持有session資源開銷,也充分保障了通信的安全性、簡(jiǎn)潔性。

        猜你喜歡
        客戶端框架服務(wù)器
        框架
        廣義框架的不相交性
        通信控制服務(wù)器(CCS)維護(hù)終端的設(shè)計(jì)與實(shí)現(xiàn)
        縣級(jí)臺(tái)在突發(fā)事件報(bào)道中如何應(yīng)用手機(jī)客戶端
        孵化垂直頻道:新聞客戶端新策略
        基于Vanconnect的智能家居瘦客戶端的設(shè)計(jì)與實(shí)現(xiàn)
        WTO框架下
        法大研究生(2017年1期)2017-04-10 08:55:06
        得形忘意的服務(wù)器標(biāo)準(zhǔn)
        計(jì)算機(jī)網(wǎng)絡(luò)安全服務(wù)器入侵與防御
        一種基于OpenStack的云應(yīng)用開發(fā)框架
        日本一道本加勒比东京热| 国产成人无码一二三区视频| 亚洲国产成人AⅤ片在线观看| 国产少妇一区二区三区| 虎白女粉嫩粉嫩的18在线观看| 国产精品久久久久9999赢消| 国产精品嫩草影院AV| 国产99精品精品久久免费| 国产精品视频白浆免费视频| 午夜男女很黄的视频| 精品熟女少妇av免费观看| 四虎国产精品成人影院| 久久精品亚洲精品国产区| 中文字幕色av一区二区三区| 女人做爰高潮呻吟17分钟| 亚洲欧洲日产国码无码| 国产一区二区三区精品毛片| 久久精品国产99久久无毒不卡| 亚洲av无码第一区二区三区| 国产国拍亚洲精品福利| 中文字幕乱码人妻在线| 国产乱对白刺激视频| 乱码午夜-极国产极内射| 漂亮的小少妇诱惑内射系列| 99久久国产精品免费热| 中文字幕无码毛片免费看| 麻豆国产成人精品午夜视频| 亚洲精品一区二区视频| 国产亚洲成人av一区| 中文人妻无码一区二区三区在线| 中文字幕乱码亚洲无线精品一区 | 久久99精品国产99久久| 久久国产av在线观看| 粉嫩av最新在线高清观看| 国产一区二区波多野结衣| 久久波多野结衣av| 精品亚洲在线一区二区| 97人伦色伦成人免费视频| 三级网址在线| 天堂av一区二区在线| 亚洲精品乱码久久久久久不卡|