《電子技術應用》
您所在的位置:首頁 > 其他 > 業界動態 > JAAS在單點登錄系統中的應用

JAAS在單點登錄系統中的應用

2009-02-25
作者:趙東輝,張曦瓊,李俊

1 引言
隨著電子商務和電子政務系統的普及,越來越多的公司或機構面臨著同樣的尷尬,公司內運行著多套系統,每個系統都是一個孤島,有自己的認證和訪問策略。對用戶來說,各系統都需要輸入用戶名,密碼,不僅麻煩,而且降低了系統的安全性。為解決這對矛盾,產生了單點登錄(Single Sign On,SSO[1,2])的概念。所謂單點登錄的核心思想是通過一定的方式使得提供服務的各網站之間建立某種聯系,提供了允許用戶只需一次登錄到站點的內建機制或者上下文環境,在登陸相互聯系的多個網站時只需要進行一次驗證即可,從而保持了應用外觀的無縫性,對用戶的透明性。
2 傳統認證方法比較
單點登錄系統的核心模塊就是其訪問控制模塊,不同的實現方案,采取的策略不同或者基于不同的安全標準。有的基于Kerberos[3]認證協議,有的利用windows NT的LDAP(Lightweight Directory Access Protocol),也有的基于Solaris NIS網絡信息服務的認證。雖然有不少產品是利用java開發的,但無論Servlet還是EJB的規范都沒有明確定義如何來實現SSO,即使在授權方面,也沒有明確的解決方案。我們可以在J2EE的藍皮書中看到對于同一個例子:Java Pet Store的訪問控制的幾個不同的解決方案,各有其優缺點。
在1.0.1版本中,使用基于表單的認證方式,這是我們在web或者電子商務開發中常用的方式。當用戶到達一個不被授權訪問的資源時,web容器就推出一個html頁面,要求輸入用戶名和密碼,其缺點就是:可移植性差[6]。
在1.1.2版本中,采用了基于Servlet的架構,基于Servlet的Sign in/Sign out來集中處理所有的request請求,來代替form-based架構的訪問控制,這樣可以使訪問控制模塊的代碼移植到所有支持J2EE平臺的應用上,而無需修改代碼。缺點是必須由應用程序自己來處理。
在版本1.3中 ,采用了Filter來實現。利用Filter來阻止未授權的訪問。在這種方案中,Filter過濾所有的HTTP請求和響應。如成功登錄,在用戶的session中,設置一個標記,Filter在每次響應前檢查該標記是否為真。因為過濾所有的HTTP請求和響應,導致響應不及時,增加了響應時延。
如果我們想開發一個可重復利用的、移植性好的SSO模塊,以上的三種方案,都不可行。本文利用在J2SE 1.4及以后的版本中推出的JAAS[4](Java Authentication Authorization Service)可以很好的解決這個問題。
3 JAAS概述
3.1 JAAS概述
JAAS在J2SE 1.3版本中還是一個可選的包,現在已經集成到J2SE 1.4版本中,是1.4及以上版本的標準類庫。伴隨著J2SE1.5版本的發布,更包含了許多諸如加密技術、XML安全性、公鑰機制(PKI)、Kerberos和結盟認證(the federating identity)的增強,JAAS在J2EE實現中扮演一個越來越重要的角色。
JAAS框架是從各種不同的安全框架和技術發展而來的,JAAS 的可堆疊和可插接功能基于 Unix 的可插接驗證模塊 (Pluggable Authentication Module, PAM) 框架。完全遵循 Java Cryptography Architecture(Java 加密體系結構,JCA)框架體系結構,它允許通過 Service Provider Interface(服務提供接口,SPI)安插多種安全機制,實現了一個Java版本的可插入式驗證模塊(Pluggable Authentication Module,PAM),在實現方面具有獨立性和互操作性,在算法上具有獨立性和可擴展性。這就使得上層的應用程序與底層所使用的各種驗證技術保持相對獨立,新的或修改后的驗證技術能夠方便地部署到應用程序而不需要修改應用程序的代碼。同時,JAAS 還引用了二個階段的提交協議中的的事務行為和 J2SE 1.2 安全包中的安全配置概念。因此,JAAS 是多種技術和概念的精華,它代表了 Java 編程語言的發展方向。
JAAS API 包含兩個方面的安全內容,即認證和授權認證是一種通過可靠的方式確定誰是 Java 代碼執行者的方法;而授權是一種確保該人具有執行某種給定任務權限的方法。在本文中,我們結合SSO重點討論JAAS的認證部分。
3.2 JAAS認證機制
認證就是校驗一個用戶擁有使用已經被企業用戶注冊機構證明了的身份鑒定的權限的處理過程。JAAS的認證機制建立于一整套插拔" title="可插拔">可插拔的模塊(參看圖1)基礎上。JAAS允許不同的驗證模型(SUN提供了幾個默認的LoginModule ,在sun.com.security.auth.module包里有諸如JndiLoginModule,Krb2LoginModule,UnixLoginModule和NTLoginModule等module,也可以自定義module)在運行時可被插拔??蛻魬每偸峭ㄟ^LoginContext和JAAS交互。
典型的認證處理過程要經過下面的步驟:
1. 創建登錄環境,生成一個LoginContext對象。
LoginContext ctx=new LoginContext(“MyApp”);
LoginContext尋找配置文件以決定使用那個LoginModule,也有可能傳遞一個回調處理程序對象CallbackHandler給LoginContext以搜集用戶驗證信息如用戶名和口令,作為選擇。
2.?通過調用LoginContext的login方法執行認證,它會加載預定義的LoginModule去檢驗是否用戶可以被認證。
3.?如果用戶被認證,那么用規則和標識和其屬性進行關聯,?或者在登陸失敗的情況下拋出一個LoginException。
?使用LoginContext的logout方法進行注銷登陸。

????????????

???????????????????????????????????? 圖1 JAAS的可插拔模塊認證機制概覽圖
在JAAS中,登陸是一個兩階段(Two-phase)的處理過程。第一階段是login階段(就像上面2所描述的)。這個階段唯一的任務是認證。只要處理過程成功通過這個階段,認證處理過程就進入了“提交(commit)”階段(如上步驟3),這一階段LoginModule的commit方法被調用去關聯所屬子項相關的規則和標識。
在所有的認證模塊當中,LoginModule是事實上的認證機制的借口。雖然LoginModule決沒有得到直接調用客戶應用的機會,但是他經由一個可插拔的模塊提供了一個認證的具體類型,其實現了認證的算法并且決定實際的認證過程是怎樣被執行的。
JAAS認證結構體系是可擴展的,所以只要在配置文件中指定使用哪個LoginModule模塊就可以幾乎全部插入任何LoginModule模塊,如下例所示:
MyApp{
Com.exercise.jaas.module.myLoginModule required debug=ture;
};
這里MyApp是LoginContext的名字,當你生成一個新的LoginContext開始認證過程時它會被傳入LoginContext的構造函數中。依據配置文件,提醒JAAS有關LoginModule在登錄過程中應該被用來執行認證(此config文件表明myLoginModule將被使用)。
Required參數及其備選參數用于指定一個給定的驗證過程的成功或失敗對總體驗證過程的影響:
1)required表示登錄模塊必須成功。即使它不成功,還將調用其它登錄模塊。
2)optional表示登錄模塊可以失敗,但如果另一個登錄模塊成功,總體登錄仍可以成功。如果所有登錄模塊都是可選的,那么要使整個認證成功至少必須有一個模塊是成功的。
3)requisite表示登錄模塊必須成功,而且如果它失敗,將不調用其它登錄模塊。
4)sufficient表示如果登錄模塊成功,則總體登錄將成功,同時假設沒有其它必需或必不可少的登錄模塊失敗。
ModuleOption允許有多個參數。例如你可以設定調試參數為True(debug=true),這樣診斷輸出將被送到System.out中。
4.單點登錄系統中認證功能的設計和實現
目前已經出現了眾多的商用SSO產品,但一般都價格昂貴,或者局限于特定的平臺,例如:Microsoft的.net Passport、IBM WebSphere Portal Server、Netegrity SiteMinder等,由于J2EE沒有定義SSO的具體實現方法,他們的實現機制不盡一樣;盡管如此,但這些產品的實現機制都遵循一種通用的模式,這種模式由三個主要部分組成:入口檢查單元(Gatekeeper)、身份認證單元(Authenticator)、用戶憑征存儲單元(User Credential Store),我們稱在這三個部分基礎上的SSO為GAC-SSO[6](GateKeeper,Authenticator and Credential Store SSO),這三個組成部分之間的交互關系描述如下:
1.當Gatekeeper檢查到用戶請求一個受保護的資源時,它首先檢查該用戶是否已經為該Web應用創建好一個Login Session,若沒有,Gatekeeper再檢查是否已經建立一個和Authenticator相關的全局SSO session;
2.若沒有建立全局的SSO Session,用戶被導向到Authenticator的登錄頁面,并要求用戶提供用戶名和密碼等憑證信息;
3.Authenticator接受用戶提供的憑證信息,然后通過用戶的身份認證系統驗證用戶;
4.若Authenticator驗證成功,建一個全局Login Session,導向至Gatekeeper,并在該用戶的Web應用中為其創建一個Login Session;
5.Authenticator和Gatekeepers之間通過多種方式進行交互,例如:共享cookie方式、Web Service的SOAP或者利用安全聲明標記語言(SAML)來進行信息的安全交換。
在GAC-SSO中采用JAAS的認證機制,使得認證變得簡單可行。由于JAAS支持插拔的認證機制,可以根據需求進行定制不同的LoginModule,僅對配置文件進行適當的修改,而代碼幾乎可以不作修改,如我們采用基于Kerberos協議的認證機制,SUN已默認實現其LoginModule即Krb2LoginModule,就無需再編碼實現該Module,極大的節省了工作量。
同時,從圖1可以看出,在LoginModule之間共享用戶驗證信息是利用JAAS實現單點登錄的基礎和關鍵,在此我們采用JAAS實現。首先把各種認證機制按需放入配置文件的登錄模塊列表中。在LoginModule接口的initialize(Subject subject,CallbackHandler callbackhandler,Map sharedState,Map options)方法中,Map類型的sharedState參數可用于登錄模塊之間的數據共享,因此可用于共享各驗證過程的登錄狀態。
在LoginContext類的login()方法中定義Map類型的成員變量sharedStateMap,在執行LoginModule的initialize()方法時會將該對象傳遞給登錄模塊。Map對象可保存兩個對象之間的映射關系,因此GateKeeper中只要執行Map類型的sharedStateMap對象的put(userName,loginFlag)方法,即可將需要傳遞的信息loginFlag與userName關聯,來判斷userName是否登錄(其中每個用戶的userName在整個的GAC-SSO中必須唯一)。其他登錄模塊只要使用sharedStateMap對象的get(userName)方法即可獲取該userName的登錄狀態,擴展開來也可以實現其他共享信息的傳遞,但若系統的權限控制較復雜,共享信息較多的話,可以在User Credential Store模塊中,利用Principal對象貯存用戶的身份等共享信息,通過Principal對象進行傳遞。據此我們可以開發出符合要求的單點登錄系統。
5 結束語
GAC-SSO模式比較適合中小企業,尤其是那些需要建立自己的SSO系統,但又沒有很多初始投資的企業;基于這一模式,企業不需要依賴特定的SSO產品,就可以建立擁有自有技術的單點登錄解決方案。文中介紹了單點登錄的概念和JAAS框架的構成,最后提出了利用JAAS實現單點登錄的用戶驗證功能。
參考文獻
[1]. The Open Group's "Introduction to Single Sign-On"[EB/OL], http://www.opengroup.org/security/sso/sso_intro.htm?
[2] Mayank Upadhyay and Ram Marti, Single Sign-On Using Kerberos in Java, [EB/OL] http://java.sun.com/j2se/1.4.2/docs/guide/security/jgss/single-signon.html, May 2 2001
[3] John Kohl and B. Clifford Neuman,The Kerberos Network Authentication Service (Version 5). Internet Request for Comments RFC-1510, September 1993
[4] JAAS Overview[EB/OL], http://java.sun.com/products/jaas/overview.html, 2002
[5]林天峰,基于JAAS的Java安全編程[J], 計算機應用與軟件,2003年7月,P86-88
[6] Jian Zhong and Mike Lehr, US Department of Energy signs on to J2EE [EB/OL] http://www.javaworld.com/javaworld/jw-05-2002/jw-0524-signon-p2.html, May 24, 2002

?

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          欧美在线播放高清精品| 美女脱光内衣内裤视频久久网站| 玖玖国产精品视频| 欧美 日韩 国产一区二区在线视频| 欧美另类69精品久久久久9999| 欧美日韩一区自拍| 欧美视频网站| 裸体歌舞表演一区二区| 亚洲精品极品| 亚洲欧美一区二区三区极速播放| 亚洲精选久久| 狠狠久久亚洲欧美专区| 午夜精品在线看| 欧美电影电视剧在线观看| 欧美系列亚洲系列| 亚洲色无码播放| 国产精品亚洲激情| 亚洲欧美日韩精品一区二区| 免费成人黄色片| 一本久久综合| 亚洲三级电影全部在线观看高清| 久久久久久久久久看片| 日韩午夜电影在线观看| 18成人免费观看视频| 国产一区二区电影在线观看| 在线观看一区二区视频| 狠狠色香婷婷久久亚洲精品| 亚洲精品一区二区三区99| 亚洲人成网站999久久久综合| 亚洲免费高清| 亚洲欧美日韩网| 久久偷看各类wc女厕嘘嘘偷窃| 国产精品r级在线| 国产免费观看久久黄| 国产精品久久久久9999吃药| 久久综合电影一区| 久久久免费精品视频| 在线日韩日本国产亚洲| 亚洲福利视频网| 亚洲国产婷婷香蕉久久久久久99| 国产精品爱久久久久久久| 欧美一区免费| 亚洲美女视频网| 久久久久久久久久久久久久一区| 国产三级欧美三级日产三级99| 欧美精品一区二区三区蜜桃| 欧美日韩亚洲一区| 一区三区视频| 久久中文在线| 欧美日韩一区三区四区| 国产精品mv在线观看| 亚洲欧洲精品一区二区| 一区二区三区四区在线| 红桃视频欧美| 欧美www在线| 午夜在线视频观看日韩17c| 国产精品久久久久久久久免费桃花| 欧美成人综合一区| 欧美一区二区三区视频免费播放| 亚洲一区美女视频在线观看免费| 午夜久久久久久久久久一区二区| 国产精品乱子乱xxxx| 性欧美18~19sex高清播放| 国产在线播放一区二区三区| 老牛国产精品一区的观看方式| 午夜精品视频在线| 国产亚洲精品综合一区91| 国产精品综合色区在线观看| 欧美色精品天天在线观看视频| 怡红院精品视频在线观看极品| 夜夜嗨av一区二区三区中文字幕| 久久精品论坛| 午夜在线观看免费一区| 亚洲精品久久久久久久久久久久久| 欧美日韩综合在线| 一区二区高清视频| 久久一区二区三区四区| 一区二区久久久久久| 亚洲国产福利在线| 欧美激情免费观看| 亚洲一区二区三区在线播放| 亚洲主播在线观看| 夜夜嗨av一区二区三区四区| 国产精品magnet| 亚洲国产日韩一区| 国产精品素人视频| 国产三级欧美三级日产三级99| 欧美极品欧美精品欧美视频| 国产一在线精品一区在线观看| 伊人成年综合电影网| 亚洲国产日韩欧美在线动漫| 亚洲伊人观看| 国产精品久久久久aaaa九色| 性欧美精品高清| 欧美日韩精品伦理作品在线免费观看| 国产精品视频网| 亚洲在线观看免费视频| 午夜日韩视频| 亚洲一区在线看| 国产亚洲欧洲997久久综合| 欧美视频中文一区二区三区在线观看| 99国内精品| 久久嫩草精品久久久久| 久久久久综合一区二区三区| 国产麻豆精品久久一二三| 亚洲黄色一区二区三区| 国产日韩精品在线观看| 欧美视频在线播放| 国产精品免费在线| 好吊视频一区二区三区四区| 欧美日韩一卡二卡| 国产亚洲综合性久久久影院| 免费欧美日韩| 国产午夜精品理论片a级大结局| 狠狠色丁香久久婷婷综合丁香| 国产免费成人| 欧美中文字幕| 伊人久久亚洲美女图片| 久久久久久网站| 久久天堂av综合合色| 在线亚洲免费| 香蕉久久夜色精品国产使用方法| 亚洲黄色视屏| 国产精品久久久91| 亚洲国产精品第一区二区三区| 一区二区三区中文在线观看| 好吊色欧美一区二区三区四区| 国产色综合网| 亚洲激情第一区| 亚洲国产精彩中文乱码av在线播放| 欧美国产乱视频| 久久精品一区二区三区四区| 亚洲社区在线观看| 国产精品黄色| 国内久久视频| 欧美在线视频一区二区| 亚洲欧美国产三级| 亚洲欧美变态国产另类| 亚洲精品乱码久久久久久蜜桃麻豆| 亚洲精品视频在线观看网站| 羞羞色国产精品| 国产日产欧美一区| 亚洲大胆人体视频| 欧美刺激性大交免费视频| 欧美va亚洲va日韩∨a综合色| 亚洲人成人一区二区三区| 欧美成人在线网站| 国产精品久久久久av| 欧美电影专区| 亚洲免费成人av电影| 欧美人妖另类| 久久久夜精品| 99精品欧美| 欧美日本精品一区二区三区| 亚洲国产精品欧美一二99| 亚洲一区二区三区影院| 亚洲日本中文| 国产视频精品xxxx| 国产欧美视频一区二区三区| 亚洲精品免费看| 亚洲精品视频免费观看| 国产精品久久久久久久午夜| 欧美日韩精品一本二本三本| 欧美成年人在线观看| 久久成人一区| 欧美成人福利视频| 亚洲欧美激情在线视频| 欧美日本韩国在线| 欧美激情在线播放| 亚洲在线视频| 欧美私人网站| 亚洲一区在线观看免费观看电影高清| 久久久久久久国产| 免费视频一区二区三区在线观看| 亚洲成人原创| 中文网丁香综合网| 另类国产ts人妖高潮视频| 久久免费偷拍视频| 午夜日韩在线观看| 99视频热这里只有精品免费| 欧美日韩另类丝袜其他| 欧美成人精品福利| 亚洲国产专区| 国产精品av久久久久久麻豆网| 国产精品揄拍500视频| 国模大胆一区二区三区| 欧美激情第4页| 欧美一区二区三区在线免费观看| 女主播福利一区| 亚洲国产欧洲综合997久久| 黑人中文字幕一区二区三区| 亚洲国产高潮在线观看| 久久成人这里只有精品| 翔田千里一区二区| 米奇777超碰欧美日韩亚洲| 在线一区二区日韩| 国产精品国产三级国产aⅴ入口| 国产亚洲一区二区在线观看| 国产精品日韩在线| 亚洲激情六月丁香| 久久国产欧美日韩精品| 在线观看国产成人av片| 欧美激情在线观看| 久久影院亚洲| 欧美日韩一区二区视频在线| 欧美日韩免费区域视频在线观看| 欧美日韩国产大片| 国产美女精品一区二区三区| 久久综合一区二区| 亚洲系列中文字幕| 久久精品国产精品| 欧美激情1区2区| 日韩一级大片在线| 亚洲男人第一网站| 国产精品一区二区三区久久久| 黄色一区二区三区四区| 国产日产亚洲精品系列| 免费美女久久99| 欧美高清视频一区二区三区在线观看| 久久精品国产99国产精品| 久久久久国产一区二区三区四区| 国产精品免费aⅴ片在线观看| 欧美在线国产精品| 久久久精品日韩| 国产精品久久久久77777| 亚洲国产精品一区在线观看不卡| 在线视频国内自拍亚洲视频| 国产精品日韩欧美一区二区三区| 亚洲欧美日韩国产一区二区| 久久全球大尺度高清视频| 国产精品大全| 欧美高清视频一二三区| 一本久久精品一区二区| 欧美综合国产| 亚洲素人一区二区| 亚洲欧美日韩综合国产aⅴ| 亚洲在线视频免费观看| 国产一区二区三区观看| 亚洲精品网站在线播放gif| 欧美激情在线| 久热精品视频在线观看| 免费观看成人网| 久久精品视频网| 欧美日韩岛国| 一区二区在线视频观看| 亚洲第一中文字幕| 国产精品久久久久久久久免费樱桃| 激情综合自拍| 国产麻豆精品久久一二三| 国产精一区二区三区| 日韩一区二区电影网| 国产精品久久久久久久久久尿| 国产综合色在线视频区| 影音先锋中文字幕一区二区| 亚洲一区3d动漫同人无遮挡| 久久香蕉国产线看观看av| 欧美一区二区私人影院日本| 亚洲国产精品t66y| 亚洲精品国产精品久久清纯直播| 亚洲高清不卡| 欧美日韩精品免费观看视频完整| 欧美主播一区二区三区美女 久久精品人| 国产夜色精品一区二区av| 国产欧美精品日韩区二区麻豆天美| 日韩图片一区| 亚洲免费av电影| 影音先锋在线一区| 久久综合九色九九| 久久夜色精品国产欧美乱| 久久成人av少妇免费| 亚洲中无吗在线| 久久成人人人人精品欧| 国产区精品在线观看| 国产精品大片免费观看| 销魂美女一区二区三区视频在线| 国产精品人人爽人人做我的可爱| 亚洲无限av看| 亚洲国产欧美精品| 亚洲精品老司机| 日韩视频在线观看| 在线观看亚洲视频啊啊啊啊| 亚洲激情偷拍| 国产欧美va欧美不卡在线| 久久精品国产一区二区三区| 亚洲精品中文字幕有码专区| 中国成人在线视频| 亚洲国产成人tv| 永久91嫩草亚洲精品人人| 国产免费亚洲高清| 亚洲精品自在久久| 国产精品免费小视频| 欧美诱惑福利视频| 国产欧美精品日韩| 国内成人精品一区| 亚洲精品1234| 国产精品99一区| 欧美一区二区三区在线播放| 永久免费视频成人| 日韩亚洲精品在线| 久久久99久久精品女同性| 久久综合亚州| 久久婷婷国产综合国色天香| 99国产精品久久久| 久久久综合网站| 欧美四级在线观看| 国产亚洲精品久久久久动| 亚洲一区二区三区午夜| 国产精品免费区二区三区观看| 亚洲欧美精品| 久久久久久久久久久久久9999| 亚洲第一区中文99精品| 国产在线精品一区二区中文| 久久久蜜臀国产一区二区| 久久亚洲春色中文字幕久久久| 国产欧美一区二区精品忘忧草| 一区二区国产日产| 欧美激情一区二区三区在线| 久久久蜜臀国产一区二区| 久久精品首页| 99视频一区二区三区| 一区精品久久| 99成人免费视频| 亚洲欧美一区二区三区在线| 亚洲人线精品午夜| 亚洲一区二区久久| 免费人成网站在线观看欧美高清| 蜜桃视频一区| 欧美在线看片a免费观看|