• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      一個(gè)簡(jiǎn)易單點(diǎn)登錄系統(tǒng)的構(gòu)建與實(shí)現(xiàn)

      2013-10-10 07:32:04黃偉亮
      關(guān)鍵詞:單點(diǎn)開(kāi)源客戶端

      劉 輝,黃偉亮

      (河南機(jī)電職業(yè)學(xué)院 信息工程系,鄭州 451191)

      0 引言

      單點(diǎn)登錄是目前比較流行的對(duì)多種系統(tǒng)業(yè)務(wù)進(jìn)行集成與整合的解決方案之一。所謂單點(diǎn)登錄(Single Sign On,簡(jiǎn)寫為SSO),即用戶只需在登錄時(shí)提供一次用戶認(rèn)證信息,通過(guò)認(rèn)證以后,無(wú)需再重復(fù)登錄便可訪問(wèn)其他各子系統(tǒng)應(yīng)用。IBM對(duì)SSO有一個(gè)形象的解釋,即“單點(diǎn)登錄、全網(wǎng)漫游”[1]。對(duì)現(xiàn)有的單點(diǎn)登錄實(shí)現(xiàn)案例及文獻(xiàn)[2-4]綜合分析顯示,對(duì)已有系統(tǒng)進(jìn)行單點(diǎn)登錄改造、整合,或基于SSO重新規(guī)劃設(shè)計(jì)所有的網(wǎng)絡(luò)應(yīng)用,既耗時(shí)又耗力,需要付出巨大的代價(jià)。雖然市場(chǎng)上已出現(xiàn)了多種專門的SSO商業(yè)軟件,但價(jià)格以及對(duì)已有的網(wǎng)絡(luò)應(yīng)用支持是否完善等問(wèn)題,往往使用戶望而卻步。本文嘗試以開(kāi)源軟件為基礎(chǔ),構(gòu)建一個(gè)簡(jiǎn)易的單點(diǎn)登錄系統(tǒng),來(lái)解決局域網(wǎng)中多個(gè)應(yīng)用系統(tǒng)的用戶統(tǒng)一身份認(rèn)證和集中管理問(wèn)題。

      1 應(yīng)用技術(shù)分析

      目前,實(shí)現(xiàn)單點(diǎn)登錄的開(kāi)源軟件主要有OpenSSO、JOSSO、CAS等幾種。其中OpenSSO是由Sun公司支持的一個(gè)開(kāi)源的SSO項(xiàng)目,但自從Sun被甲骨文(Oracle)收購(gòu),該項(xiàng)目已被關(guān)閉并凍結(jié)下一步開(kāi)發(fā)[5];JOSSO(Java Open Single Sign-On)也是一個(gè)開(kāi)源的J2EE-based的SSO(單點(diǎn)登錄)基礎(chǔ)結(jié)構(gòu),它具有跨平臺(tái)性,允許整合Java和非Java應(yīng)用程序[6];CAS(Central Authentication Server)是Yale(耶魯)大學(xué)發(fā)起的一個(gè)開(kāi)源項(xiàng)目,旨在為Web應(yīng)用系統(tǒng)提供一種可靠的單點(diǎn)登錄方案,它提供了一個(gè)企業(yè)級(jí)單點(diǎn)登錄解決方案,通過(guò)獨(dú)立部署CAS Server及在客戶端比如 Java、.Net、PHP、Perl、Apache、uPortal、Ruby 等 Web 應(yīng) 用 中 加入 CAS Client的方式實(shí)現(xiàn)統(tǒng)一認(rèn)證[7]。CAS實(shí)現(xiàn)單點(diǎn)登錄的機(jī)制見(jiàn)圖1。

      圖1 CAS實(shí)現(xiàn)單點(diǎn)登錄的機(jī)制

      當(dāng)用戶通過(guò)客戶端的Web瀏覽器訪問(wèn)受保護(hù)資源時(shí),嵌入客戶端的CAS Client將截取并分析該http請(qǐng)求中是否包含合法的Service Ticket,如果有,則說(shuō)明當(dāng)前用戶已經(jīng)登錄,允許訪問(wèn)資源;否則,將該http請(qǐng)求重定向到CAS Server登錄地址,強(qiáng)制對(duì)用戶進(jìn)行認(rèn)證。在這個(gè)過(guò)程中,CAS Server主要負(fù)責(zé)對(duì)用戶的認(rèn)證工作。由于CAS具有設(shè)計(jì)理念先進(jìn)、體系結(jié)構(gòu)合理、配置簡(jiǎn)單、客戶端支持廣泛、技術(shù)成熟等優(yōu)點(diǎn),本文選用該軟件構(gòu)建單點(diǎn)登錄系統(tǒng)。

      CAS協(xié)議僅僅為基于Web的應(yīng)用提供了用戶信息的認(rèn)證服務(wù),在實(shí)際應(yīng)用中,CAS Server的認(rèn)證接口會(huì)處理登錄用戶的憑證(Credentidals)信息,最常見(jiàn)的是用戶名/密碼,CAS Server可能需要到數(shù)據(jù)庫(kù)檢索一條用戶帳號(hào)信息,也可能在XML文件中檢索用戶名/密碼,還可能通過(guò) LDAP Server獲取等。出于簡(jiǎn)單、易于再開(kāi)發(fā)考慮,本文選用的是開(kāi)源數(shù)據(jù)庫(kù)Mysql來(lái)集中保存用戶信息,并對(duì)用戶信息進(jìn)行統(tǒng)一管理。

      2 系統(tǒng)結(jié)構(gòu)與流程

      根據(jù)上述分析,該系統(tǒng)主要由三部分組成:統(tǒng)一用戶管理、CAS統(tǒng)一認(rèn)證服務(wù)、各種Web應(yīng)用(根據(jù)需要可集成多個(gè)系統(tǒng))。系統(tǒng)總體結(jié)構(gòu)如圖2所示。

      圖2 系統(tǒng)總體結(jié)構(gòu)

      統(tǒng)一用戶管理作為該系統(tǒng)獨(dú)立的一個(gè)應(yīng)用模塊,主要負(fù)責(zé)用戶的添加、刪除、更新等管理。

      統(tǒng)一認(rèn)證即當(dāng)用戶第一次訪問(wèn)不同的Web應(yīng)用資源時(shí),將被重定向到CAS統(tǒng)一認(rèn)證服務(wù)器,根據(jù)數(shù)據(jù)庫(kù)中用戶與角色的信息憑證,對(duì)其進(jìn)行檢驗(yàn),如果認(rèn)證通過(guò),則轉(zhuǎn)向相應(yīng)的Web應(yīng)用資源。

      3 系統(tǒng)實(shí)現(xiàn)

      根據(jù)上述分析,本文將基于J2EE構(gòu)建該單點(diǎn)登錄系統(tǒng),采用Tomcat作為Web服務(wù)器,結(jié)合CAS Server配置統(tǒng)一認(rèn)證服務(wù),使用數(shù)據(jù)庫(kù)Mysql來(lái)存儲(chǔ)用戶與角色信息,并進(jìn)行相應(yīng)的應(yīng)用程序開(kāi)發(fā),以實(shí)現(xiàn)用戶添加、刪除、更新等管理,至于其他的客戶端Web應(yīng)用,可根據(jù)需要自行選擇不同的系統(tǒng)結(jié)合CAS Client進(jìn)行配置。

      3.1 前期工作

      首先,根據(jù)服務(wù)器配置,正確安裝JRE、Tomcat與 Mysql,本 文 使 用 的 是 JRE1.6.0_10+Tomcat 6.0.36+Mysql5.6,然后輸入部分用戶信息到數(shù)據(jù)庫(kù)中,以用于測(cè)試。

      另外,CAS需要SSL(安全套接層協(xié)議)才能正常工作。SSL提供了一種在應(yīng)用服務(wù)器(如Web、Telenet、FTP等)和客戶端之間提供數(shù)據(jù)安全性分層的機(jī)制,它為TCP/IP連接提供數(shù)據(jù)加密、服務(wù)器認(rèn)證、消息完整性以及可選的客戶機(jī)認(rèn)證。通過(guò)在Web服務(wù)器端配置專業(yè)的CA機(jī)構(gòu)頒發(fā)的證書,實(shí)現(xiàn)SSL通信。作為一個(gè)局部的應(yīng)用系統(tǒng),本文采用J2SE自帶的keytool工具,自己生成一個(gè)證書。

      第一步:生成服務(wù)器證書。參考命令格式如下:

      keytool-genkey-alias tomcat-keyalg RSA-keysize 1024-keypass changeit-validity 365-storepass changeit-keystore d:ssoserver.keystore

      第二步:將證書導(dǎo)入到JDK的證書信任庫(kù)中。

      導(dǎo)入過(guò)程包括兩個(gè)操作,首先是導(dǎo)出證書,然后將其導(dǎo)入到證書信任庫(kù),參考命令格式如下:

      keytool-export-trustcacerts-alias tomcat-keystore d:ssoserver.keystore-file d:ssoserver.crtstorepass changeit

      keytool-import-trustcacerts-alias tomcat-file d:ssoserver.crt-keystore %JAVA_HOME%/jre/lib/security/cacerts-storepass changeit

      第三步:將證書應(yīng)用到Web服務(wù)器Tomcat,配置其SSL服務(wù),需要修改server.xml中Connector標(biāo)簽為如下內(nèi)容:

      maxThreads="150"minSpareThreads="25"maxSpareThreads="75"

      enableLookups="false" disableUploadTimeout="true"

      acceptCount="100"scheme="https"secure="true"

      clientAuth="false"sslProtocol="TLS"keystoreFile="d:ssoserver.keystore" eystorePass="changeit"/>

      3.2 CAS Server應(yīng)用配置

      統(tǒng)一認(rèn)證服務(wù)的配置相對(duì)簡(jiǎn)單,只需將CAS的相應(yīng)文件包放到Tomcat服務(wù)器的Web應(yīng)用文件夾即可。

      訪 問(wèn) http://www.ja-sig.org/products/cas/downloads/index.html,下載 CAS 的最新版本。筆者使用的版本是 cas-server-3.4.12。從 CAS 壓縮包中找到cas-server-webapp-3.4.12.war文件(在 modules文件夾下),將其復(fù)制到Tomcat服務(wù)器的webapps目錄下,重命名為cas;重新啟動(dòng)Tomcat后,在瀏覽器地址欄中輸入:https://localhost:8443/cas。如果能打開(kāi)登錄頁(yè)面,則表示CAS應(yīng)用可以正常啟動(dòng)。之后,根據(jù)應(yīng)用需要,可對(duì)用戶登錄界面進(jìn)行簡(jiǎn)單修改,其界面的相應(yīng)設(shè)計(jì)文件保存在目錄cas/webapp/WEB-INF/view/jsp/default/u及/cas/webapp/css中。

      3.3 M ysql數(shù)據(jù)庫(kù)的鏈接與配置

      在Mysql數(shù)據(jù)庫(kù)中建立一個(gè)用戶(User)表,用于存放用戶的登錄信息。表結(jié)構(gòu)如表1所示,包括用戶編號(hào)、登錄名稱、登錄密碼、用戶名稱、用戶描述等。

      表1 用戶(User)表結(jié)構(gòu)

      然后,通過(guò)以下步驟配置CAS,應(yīng)用Mysql數(shù)據(jù)庫(kù)進(jìn)行用戶的身份驗(yàn)證。

      第一步:復(fù)制以下兩個(gè)文件到CAS/WEB_INF/lib目錄下。

      cas-server-support-jdbc-3.1.12.jar;mysql-connector-java-5.0.8-bin.jar

      第二步:配置CAS/WEB-INF/目錄下的deployerConfigContext.xml文件,在該文件中有兩處需要修改。

      (1)增加數(shù)據(jù)源

      (2)改變認(rèn)證方式

      修改為:

      3.4 CAS Client客戶端配置

      對(duì)各種Web應(yīng)用進(jìn)行統(tǒng)一認(rèn)證,是通過(guò)將CAS Client加入到客戶端模塊實(shí)現(xiàn)的。下面以基于java的Web應(yīng)用進(jìn)行說(shuō)明。

      首先,從 http://www.ja-sig.org/downloads/casclients/CAS Client下載CAS Client的最新版本,比如本文使用的是 cas-client-3.2.1,將壓縮包中modules目錄下的 cas-client-core-3.2.1.jar文件復(fù)制到所發(fā)布Web應(yīng)用的WEB-INF/lib下。然后,在客戶端Web應(yīng)用中修改WEB-INF/web.xml文件,在其中添加應(yīng)用過(guò)濾器,示例如下:

      在多種Web應(yīng)用客戶端進(jìn)行上述類似配置后,當(dāng)用戶通過(guò)瀏覽器第一次訪問(wèn)CAS保護(hù)的Web應(yīng)用時(shí),該http請(qǐng)求就將會(huì)被重定向到CAS統(tǒng)一認(rèn)證服務(wù)器(即 https://localhost:8443/cas),要求輸入用戶名與密碼進(jìn)行認(rèn)證,從而實(shí)現(xiàn)了簡(jiǎn)單的單點(diǎn)登錄與認(rèn)證。

      4 小結(jié)

      本文基于開(kāi)源軟件所實(shí)現(xiàn)的簡(jiǎn)易單點(diǎn)登錄系統(tǒng),完成了用戶的集中管理與統(tǒng)一的身份認(rèn)證,使得用戶輸入一次用戶名和密碼便可訪問(wèn)多個(gè)Web應(yīng)用,從而提高了用戶使用系統(tǒng)的效率,改善了用戶體驗(yàn)。但是,單點(diǎn)登錄(SSO)的部署本身就是一把雙刃劍,如果配置不合理反而會(huì)使系統(tǒng)的安全性降低。本文所提出的這個(gè)系統(tǒng),在實(shí)際應(yīng)用中還有待于進(jìn)一步改進(jìn),以提高系統(tǒng)的整體安全性。

      [1]肖菁.WebSphere環(huán)境下的SSO實(shí)現(xiàn)之——SSO實(shí)現(xiàn)技術(shù)準(zhǔn)備[EB/OL].(2003-08-01)[2013-05-26].http://www.i-bm.com/developerworks/cn/websphere/library/techarticles/xiaojing/SSOprepare/SSOprepare.htm l.

      [2]李凡,王流一.一種基于票據(jù)的單點(diǎn)登錄協(xié)議設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與科學(xué),2012(2).

      [3]鄭偉,王加陽(yáng).異構(gòu)應(yīng)用的單點(diǎn)登錄方法[J].軟件導(dǎo)刊,2010(7).

      [4]金永勤.在應(yīng)用整合中單點(diǎn)登錄解決方案的研究[J].計(jì)算機(jī)與現(xiàn)代化,2007(7).

      [5]開(kāi)源中國(guó)社區(qū).opensso-單點(diǎn)登錄框架[EB/OL].(2008-09-24)[2013-05-26].http://www.oschina.net/p/opensso.

      [6]開(kāi)源中國(guó)社區(qū).JOSSO-單點(diǎn)登錄框架 -開(kāi)源中國(guó)OSChina.NET[EB/OL].(2008-09-24)[2013-05-26].http://www.oschina.net/p/josso/simila-r_projects.

      [7]張濤,王秉坤.使用CAS在Tomcat中實(shí)現(xiàn)單點(diǎn)登錄[EB/OL].(2008-04-10)[2013-05-26].http://www.ibm.com/developerworks/cn/opensource/os-cn-cas/.

      猜你喜歡
      單點(diǎn)開(kāi)源客戶端
      歷元間載波相位差分的GPS/BDS精密單點(diǎn)測(cè)速算法
      超薄異型坯連鑄機(jī)非平衡單點(diǎn)澆鑄實(shí)踐與分析
      山東冶金(2019年5期)2019-11-16 09:09:10
      五毛錢能買多少頭牛
      縣級(jí)臺(tái)在突發(fā)事件報(bào)道中如何應(yīng)用手機(jī)客戶端
      孵化垂直頻道:新聞客戶端新策略
      基于Vanconnect的智能家居瘦客戶端的設(shè)計(jì)與實(shí)現(xiàn)
      數(shù)字電視地面?zhèn)鬏斢脝晤l網(wǎng)與單點(diǎn)發(fā)射的效果比較
      大家說(shuō):開(kāi)源、人工智能及創(chuàng)新
      開(kāi)源中國(guó)開(kāi)源世界高峰論壇圓桌會(huì)議縱論開(kāi)源與互聯(lián)網(wǎng)+創(chuàng)新2.0
      16噸單點(diǎn)懸掛平衡軸的優(yōu)化設(shè)計(jì)
      尉氏县| 东辽县| 仪陇县| 太谷县| 策勒县| 伊金霍洛旗| 隆昌县| 临海市| 汉阴县| 宾阳县| 馆陶县| 东莞市| 阿拉善右旗| 汝南县| 台北市| 浦城县| 侯马市| 河东区| 长岛县| 延吉市| 荃湾区| 永丰县| 莫力| 清流县| 安西县| 浮山县| 磴口县| 江西省| 二连浩特市| 冀州市| 崇明县| 酒泉市| 连州市| 建瓯市| 武胜县| 临高县| 姚安县| 昌吉市| 合水县| 昌宁县| 陵川县|