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

基于CAS的單點登錄

2019-12-10 09:48:22蔡建軍魏金津任女爾
電腦知識與技術 2019年28期

蔡建軍 魏金津 任女爾

摘要:建設車企的單點登錄系統,可以提升其用戶體驗,提高其使用軟件的效率。為了滿足車企定制化的軟件業務需求而基于CAS二次開發單點登錄系統。使用Apache Shiro框架去整合CAS客戶端開發,可以大大提高開發效率和系統可靠性。對于企業不同的系統需要根據其具體架構使用不同的方法去集成CAS客戶端。

關鍵詞:CAS;單點登錄;Shiro

中圖分類號:TP319? ? ? ? 文獻標識碼:A

文章編號:1009-3044(2019)28-0251-05

開放科學(資源服務)標識碼(OSID):

1概述

隨著車企業務的快速發展,內部系統不斷增多,每個系統都有自己的認證體系,用戶需要記住每個系統的用戶名和密碼并在訪問時輸入校驗,這樣是非常麻煩的,所以用戶希望只需要登錄一次就可以訪問所有指定的被信任的應用系統。

某車企的需求是將A、B、C三套系統進行單點登錄整合,要求其中一個系統登錄之后便可通過菜單鏈接到別的系統。A與C系統的登錄用戶用的是同一數據庫的同一用戶表,B系統的登錄用戶雖然和A、C不同,但是可以經由一定的關系映射過去。A、B系統所用框架是基于傳統XML Spring的,而C系統是基于新的SpringBoot【1】框架開發的。

針對此車企的單點登錄需求我們選擇了CAS去開發實現。CAS全稱為Central Authentication Service,中文意思是中央認證服務,是一個實現單點登錄的開源框架,分為客戶端與服務端兩部分。

CAS服務端用來負責用戶的認證工作,會提供一個統一的登錄頁面,用戶輸入登錄名、密碼登錄后CAS會生成一個ticket存在服務器,還會生成一個類似cookie的票據返回客戶端,用戶下次訪問帶上票據經過CAS驗證后便可以訪問系統。

系統集成CAS客戶端,便可以接入CAS服務。當用戶訪問車企集成完CAS客戶端的系統時,系統先判斷是不是登錄,沒有登錄則重定向到CAS服務端的統一登錄頁面,用戶再通過登錄名、密碼登錄。

由于CAS服務端無法滿足車企業務的需求,我們還需要對其進行二次開發。三個系統之前的登錄功能都要廢棄,登錄統一到一個系統。選用Apache Shiro【2】為安全框架去整合使用CAS,可以大大提高集成的效率與可靠性。

2 CAS介紹

1)術語

Ticket Granting ticket (TGT):可以認為是CAS Server根據用戶名密碼生成的一張票,存在Server端。

Ticket-granting cookie (TGC):其實就是一個Cookie,存放用戶身份信息,由Server發給Client端。

Service ticket (ST):由TGT生成的用于驗證并且只能用一次的票據。相當于CAS服務端發給客戶端的票,下次CAS客戶端帶著票找服務端校驗。

2)處理流程

1、用戶訪問系統,若是沒有登錄,就重定向到CAS服務端的登錄頁面,URL形如http ://cas-ip:port/login?service=http ://ip:port,service后面的地址就是登錄成功后要重定向的系統URL。

2、在登陸頁面輸入用戶名密碼認證,認證成功后CAS服務端生成TGT,再用TGT生成一個ST。然后再第三次重定向并返回ST和cookie(TGC)到瀏覽器。

3、瀏覽器帶著ST再訪問想要訪問的地址http://ip:port /?ticket=ST-36828-xpvUKEdxVfeiPM0Sauz8,ticket后面那一串便是ST。

4、瀏覽器的服務器收到ST后再去CAS服務器驗證一下是不是為本身簽發的,驗證經由過程后就會表現頁面信息,也便是重定向到第1步service后面的那個URL,首次登陸完畢。

5、再登陸另一個接入CAS服務端的客戶端體系,重定向到CAS服務端,Server判定是第一次來(可是此時有TGC,也便是cookie,所以不用去登錄頁面了),但此時沒有ST,去cas-server申請一個于是重定向到cas-server,形如:http://cas-ip:port /login?service=http://ip:port&&TGC(cookie)。

6、CAS服務端生成ST,重定向到瀏覽器http ://ip:port/?ticket=ST-31868-uiopasdcftqsxzmklgv6-yyyy。

7、瀏覽器的服務器收到ST后再去cas-server驗證一下是否為自己簽發的,驗證通過后就會顯示頁面信息(同第4步)。

3 CAS服務端二次開發

我們選擇使用Apache的CAS Server為單點登錄服務器,但是其功能遠遠不能滿足我們的需求,這個時候我們就需要基于源碼進行二次開發。

3.1 環境搭建

采用maven overlays特性(通路徑下的同名文件會使用最新的資源文件替換已有war目錄中下的資源文件)搭建,只需引入Maven【3】依賴:

3.2修改CAS服務器端登錄認證方式為數據庫認證

CAS服務端初始提供的是比較簡單的用戶名、密碼認證,這顯然是不能滿足車企需求的。在此我們需要修改使其支持基于數據庫的用戶名密碼校驗。

3.3 添加驗證碼校驗

為了車企的安全起見,防止Cas Server被惡意登錄及防暴力登錄【4】。這里采用驗證碼校驗。

1) 引入Maven依賴

com.google.code.kaptcha

kaptcha

2) 配置web.xml

下面的內容需要添加進src\main\webapp\WEB-INF\web.xml文件中:

<!-- Captcha -->

Kaptcha

com.google.code.kaptcha.servlet.KaptchaServlet

kaptcha.border

no

kaptcha.textproducer.char.space

5

kaptcha.textproducer.char.length

5

Kaptcha

/captcha.jpg

3) UsernamePasswordCaptchaCredential

創建UsernamePasswordCaptchaCredential繼承自

org.jasig.cas.authentication.RememberMeUsernamePasswordCredential,拓展了一個驗證字段captcha

@NotNull

private String captcha;

4) 添加驗證碼校驗

代碼略

5) 配置login-webflow.xml

修改文件src\main\webapp\WEB-INF\login-webflow.xml,該文件是Spring Web Flow的配置文件。在這里定義說明了全部CAS服務端的登錄校驗認證流程。接下來,需要在登錄屬性表單中添加驗證碼字段及添加修改有關涉及驗證碼校驗的流程替換原來的credential配置為我們新建的UsernamePasswordCaptchaCredential

3.4 CAS登錄頁定制

1) 拷貝資源文件

事先讓美工設計一套登錄頁面。然后將css、image、js拷貝到src\main\webapp\css src\main\webapp\images src\main\webapp\js目錄下。

2) 修改casLoginView.jsp

4 集成CAS客戶端

4.1 引入Maven依賴

采用Shiro集成CAS單點登錄客戶端,添加Maven依賴:

4.2 ShiroFilter

配置ShiroFilter攔截外來請求,下圖在ShiroCasFilterConfiguration類配置/api/**為authc,也就是api路徑下的所有請求都必須登錄才能訪問。而其他路徑下的請求則不受此約束。

Shiro集成CAS,其實就是將CasFilter加入到其Filter鏈中,對指定url訪問請求用CasFilter進行攔截,實現單點登錄、登出的校驗功能。

4.3 CasRealm

Shiro的核心配置是Realm,一般項目中繼承Authorizingrealm類,實現其中的doGetAuthenticationInfo和doGetAuthorizationInfo方法。doGetAuthenticationInfo方法用于用戶認證,可以設置登錄后Session中的數據,doGetAuthorizationInfo用于授權,角色、權限分配。

Shiro集成CAS也是自定義realm繼承CasRealm,由于認證在CAS服務端已經完成,CAS客戶端只需要把CAS認證返回的token結合起來,加入自己的角色、權限控制業務等等就行。

數據資源中心的車企項目現在都是基于SpringBoot框架開發的,但是很多老項目是基于傳統XML Spring【5】開發的,兩者集成CAS客戶端的方法不同但是基本原理是相同的。

5 配置與部署

1) 配置數據庫連接

2) 部署方式

將CAS服務打成war包,放入tomcat運行,根據需要修改war包名,比如叫castest.war,tomcat啟動以后,war包會被解壓。在webapps\castest\WEB-INF下可以看見deployerConfigContext.xml,可以直接修改配置文件然后重啟tomcat實現功能,數據庫連接也可以在這里修改。

6 總結

CAS是實現單點登錄的開源框架,對CAS系統進行二次開發,可以滿足車企多系統統一認證登錄的需求。Apache Shiro是主流的Java安全框架,采取Shiro去整合CAS客戶端的集成,可以大大提高集成的效力與可靠性。由于車企系統有的是基于SpringBoot的,有的是基于傳統XML Spring的,所以在客戶端集成過程中會有一定差異,但是基本原理是一樣的。通過單點登錄的建設,大大提升了用戶的體驗,提高了軟件系統的利用效力,在車企用戶中獲得了一致的好評。

參考文獻:

[1] 楊家煒.基于Spring Boot的web設計與實現[J].輕工科技,2016(7).

[2] 丁潔.基于Shiro的Web應用安全框架設計研究[J].信息與電腦,2018(13):18.

[3] 江日念,林霞,喬德新.Maven在Java項目中的引入及應用[J].電腦知識與技術,2013.

[4] 汪潁.對于虛擬服務器SSH暴力登錄攻擊的防范[J].中國科技縱橫,2013(1).

[5] 張文宇,許明健,薛昱.論Spring的零配置與XML配置[J].計算機系統應用,2015.

【通聯編輯:朱寶貴】

主站蜘蛛池模板: 欧美劲爆第一页| 一级毛片视频免费| 国产精品无码作爱| 亚洲成a人片7777| 精品国产成人国产在线| 欧美亚洲国产视频| 国产成人精品一区二区| 香蕉久久国产超碰青草| 国产精品一区二区在线播放| 57pao国产成视频免费播放| 精品一区二区三区视频免费观看| 亚洲中文字幕久久无码精品A| 国产精品所毛片视频| 亚洲综合色婷婷| 亚洲视屏在线观看| 高清无码手机在线观看| 色婷婷综合激情视频免费看 | 国产毛片高清一级国语| 国产尤物视频在线| 国产靠逼视频| 亚洲精品桃花岛av在线| 免费一极毛片| 国产精品99久久久| 在线视频精品一区| 男人的天堂久久精品激情| 色天天综合久久久久综合片| 免费中文字幕一级毛片| 又爽又大又黄a级毛片在线视频| 激情六月丁香婷婷| 中国国产A一级毛片| 色婷婷天天综合在线| 国产免费怡红院视频| 99视频只有精品| 草草线在成年免费视频2| 国产99久久亚洲综合精品西瓜tv| 香蕉eeww99国产在线观看| 欧美精品成人一区二区视频一| 亚洲AV永久无码精品古装片| 精品无码视频在线观看| 精品视频一区在线观看| 国产欧美日韩在线一区| 免费无码AV片在线观看国产| 久久青草精品一区二区三区| 国产91视频观看| 91成人免费观看| 国产91精品调教在线播放| 国产91av在线| 新SSS无码手机在线观看| 亚洲欧美h| 久久久久九九精品影院| 综合亚洲网| 亚洲六月丁香六月婷婷蜜芽| 国产成人精品一区二区秒拍1o| 凹凸国产分类在线观看| 亚洲日韩精品欧美中文字幕| 97国产精品视频人人做人人爱| 欧美激情综合一区二区| 在线免费看片a| a级毛片免费播放| 在线观看91精品国产剧情免费| 爽爽影院十八禁在线观看| 日韩精品高清自在线| 69免费在线视频| 欧美成人aⅴ| 久久精品中文字幕免费| 欧美亚洲一区二区三区导航 | 日本91视频| 亚洲免费毛片| 欧美一级专区免费大片| 中国成人在线视频| 99中文字幕亚洲一区二区| 国产浮力第一页永久地址| 亚洲人成在线精品| 精品福利视频导航| 日韩高清欧美| 亚洲欧美天堂网| 亚洲 日韩 激情 无码 中出| 久青草免费在线视频| 欧美在线综合视频| 在线精品亚洲一区二区古装| 国产精品亚欧美一区二区| www.国产福利|