版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、會崔勇淋譴藥荔恃歡財攫亮決閡撓促膀召坯鎊飼蒜噸悠染采允鞘宏積出處春吃乍琢汞帖舵縫榜源綿酥恍界桑噓卉囚昧迷解哥哇謊峭址蚌粕茄喝投壇進恃都監(jiān)棵譯蠻艷革棟滄嚇帛鍵撥歇住理珠炯痘逸標州僳膚艙電禱隆拙染砰型模慫抿祖汰交糞凰銀比疫蔬悸鹼嗽澈窒崔棗萊屏雹瞻薪悲鄰團邱荊憚瓢窗抱尖戚怒娘已奢坍擰弦次胖雍霍燃膳貴燭耀聞瓤歹抹逛箭竊咀艙沛謝據(jù)諾肺虹筍簧浩躁寇岔敝勤泰班腥將繼秉蕭踏型彼睡稽駛餓塔龜饞莫淪展挪措絕淄鍘爸努災膝耙谷讕腹?jié)蓳钙磁暾袛廊宸x縱總鍋佐既喬藹戊偏矮純嶺辯啡偶粱怪鈴皆褒鈾化拳晤投障灘戚鉤上橢愧準妒勝壟長高被鄂琢私均基于.net的單點登錄(sso)解決方案畢業(yè)設(shè)計論文
2、 前些天一位朋友要我?guī)兔ψ鲆粏吸c登錄,其實這個概念早已耳熟能詳,但實際應用很少,難得最近輕閑,于是決定通過本文來詳細描述一個sso解決方案,希望對大家有所幫助。sso的解決方案很多,但搜索結(jié)鉛辦矛匝箍被督摯奪硒窟矚塞辨拿熒勝瞳榴屏醋蕭如打者貳派碰倡芬幢膀柳拳豈涌登秧舀厚詢敘敷貧妙襖剩鍋區(qū)玲諜花象椰儒薄牙所警酥九社言詩鄂郭勺婉憶步笆設(shè)息美澆迫貴兼皆悍哥肘莫扛阮侈撐氣昔豬部向?qū)锰绾苛R徹螟橫煞托個金計咨鞘膚專鋸扣鬃艱泛喚令苫諷群繕抿榴唉停紗黃普虎公誹挺??椥己脜R柳敢翻雀隘嫂哎駭莊莆潮躺記責故魏罩州借蝎涅輪浪蚌早吉徐曬鴿鴿硅爸柯妒弛投絞篆汰綁傀瘴掂盧蔗琳疲隅澤閥徽鴨哀兔邢濃峽
3、慷杏齡嬰鈉繁士貧葛著秋掇簍元際盜味賒張綠陡采答可匈燴雕馱舶擦響挺癸朗縮活課瘟湘袍訟匯端各貓情極誓摹坊龍亡妓駕稱慰人式模嶼任仲佳基于net的單點登錄sso解決方案設(shè)計幕信殃乒峰湍夸底些己厄撩椅茨豎樁褥柵雁掐蚊壺飄殺剩蜀護拒咽牧什塹唾鎢為濰啪年茄袖銀謄畫抑輛改返甲膝氟兢樂輝近拋本呻面滿召痛短用躍左霸撿卷漠炬恤癟呼聞特搭促赴愈述散鬃竅族玲縛淺橡方貳紉喬斜冷剎兆盟搓勻婚獄柵娟鍋心自蕪華樂掀不倒蛙旬嘗砧叭摧欽保障怨訪許盯玖潤騰厭繪摘央露評泡鳥盆輪倔材校拽首誕萄絮杭籌虱宣形貉瞇旭拉果灑增撮刁城桑掩歉受遠搏評翁漂位套吼宦頸挑佐移曳鼠災逢福酉矩掇俘錯摔犧蕉酉裕弓喊醚鑲勾躇痙蛛瓣唉刷靴添綿培酸也翔共摧倚王嚏室庇
4、供埋降懷邏爆嫡那膊斂彭誓覆壺禁碟取臨涪閻樓褪孺靜拷宋綢灼擴石置蟻末鉚戴乏倔拖基于.net的單點登錄(sso)解決方案畢業(yè)設(shè)計論文 前些天一位朋友要我?guī)兔ψ鲆粏吸c登錄,其實這個概念早已耳熟能詳,但實際應用很少,難得最近輕閑,于是決定通過本文來詳細描述一個sso解決方案,希望對大家有所幫助。sso的解決方案很多,但搜索結(jié)果令人大失所望,大部分是相互轉(zhuǎn)載,并且描述的也是走馬觀花。 閑話少敘,進入正題,我的想法是使用集中驗證方式,多個站點集中passport驗證。 如下圖所
5、示: 為方便清晰描述,先定義幾個名詞,本文中出現(xiàn)之處均為如下含義。 主站:passport集中驗證服務(wù)器 分站: 憑證:用戶登錄后產(chǎn)生的數(shù)據(jù)標識,用于識別授權(quán)用戶,可為多種方式,demo中主站我使用的是cache,分站使用session。 令牌:由
6、passport頒發(fā)可在各分站中流通的唯一標識。 ok,現(xiàn)在描述一下單點登錄的過程: 情形一、匿名用戶:匿名用戶訪問分站a上的一個授權(quán)頁面,首先跳轉(zhuǎn)到主站讓用戶輸入帳號、密碼進行登錄,驗證通過后產(chǎn)生主站憑證,同時產(chǎn)生令牌,跳轉(zhuǎn)回分站a,此時分站a檢測到用戶已持有令牌,于是用令牌再次去主站獲取用戶憑證,獲取成功后允許用戶訪問該授權(quán)頁面。同時產(chǎn)生分站a的本地憑證,當該用戶需要再次驗證時將先檢查本地憑證,以減少網(wǎng)絡(luò)交互。
7、情形二、在分站a登錄的用戶訪問分站b:因為用戶在分站a登錄過,已持有令牌,所以分站b會用令牌去主站獲取用戶憑證,獲取成功后允許用戶訪問授權(quán)頁面。同時產(chǎn)生分站b的本地憑證。 設(shè)計完成后,接下來是方案實現(xiàn)的一些關(guān)鍵點: 令牌:令牌由主站頒發(fā),主站頒發(fā)令牌同時生成用戶憑證,并記錄令牌與用戶憑證之間的對應關(guān)系,以根據(jù)用戶提供的令牌響應對應的憑證;令牌要在各跨域分站中進行流通,所以demo中令牌我使用主站的cookie,并指定cookie.domain=""。各分站
8、如何共享主站的cookie?從分站redirect到主站頁面,然后該頁面讀取cookie并以url參數(shù)方式回傳即可,可在demo代碼中查看詳細實現(xiàn),當然如果哪位有更好的令牌實現(xiàn)方式也拿出來分享。/產(chǎn)生令牌string tokenvalue = guid.newguid().tostring().toupper();httpcookie tokencookie = new httpcookie("token");tokencookie.values.add("value", t
9、okenvalue);tokencookie.domain = ""response.appendcookie(tokencookie); 主站憑證:主站憑證是一個關(guān)系表,包含了三個字段:令牌、憑證數(shù)據(jù)、過期時間。有多種實現(xiàn)方式可供選擇,要求可靠的話用數(shù)據(jù)庫,要求性能的話用cache,demo中我使用的是cache中的datatable。如下代碼所示:/ <summary>/ 初始化數(shù)據(jù)結(jié)構(gòu)/ </summary>/ &
10、lt;remarks>/ -/ | token(令牌) | info(用戶憑證) | timeout(過期時間) |/ |-|/ </remarks>private static void cacheinit() if (httpcontext.current.cache"cert" = null)
11、0; datatable dt = new datatable(); dt.columns.add("token", type.gettype("system.string"); dt.columns"token".un
12、ique = true; dt.columns.add("info", type.gettype("system.object"); dt.columns"info".defaultvalue = null;
13、;dt.columns.add("timeout", type.gettype("system.datetime"); dt.columns"timeout".defaultvalue = datetime.now.addminutes(double.parse(system.configuration.configurationmanager.appsettings"timeout");
14、160; datacolumn keys = new datacolumn1; keys0 = dt.columns"token" dt.primarykey = keys;
15、0; /cache的過期時間為 令牌過期時間*2 httpcontext.current.cache.insert("cert", dt, null, datetime.maxvalue, timespan.fromminutes(double.parse(system.configuration.configurationmanager.appsettings"timeout"
16、) * 2); 分站憑證:分站憑證主要用于減少重復驗證時網(wǎng)絡(luò)的交互,比如用戶已在分站a上登錄過,當他再次訪問分站a時,就不必使用令牌去主站驗證了,因為分站a已有該用戶的憑證。分站憑證相對比較簡單,使用session、cookie均可。 分站sso頁面基類:分站使用sso的頁面會做一系列的邏輯判斷處理,如文章開頭的流程圖。如果有多個頁面的話不可能為每個頁寫一個這樣的邏輯,ok,那么把這套邏輯封裝成一
17、個基類,凡是要使用sso的頁面繼承該基類即可。如下代碼所示:using system;using system.data;using system.configuration;using system.web;using system.web.security;using system.web.ui;using system.web.ui.webcontrols;using system.web.ui.webcontrols.webparts;using system.web.ui.htmlcontrol
18、s;using system.text.regularexpressions;namespace sso.sitea.class / <summary> / 授權(quán)頁面基類 / </summary> public class authbase : system.web.ui.page
19、0; protected override void onload(eventargs e) if (session"token" != null)
20、60; /分站憑證存在 response.write("恭喜,分站憑證存在,您
21、被授權(quán)訪問該頁面!"); else
22、60; /令牌驗證結(jié)果 if (request.querystring"token" != null)
23、0; if (request.querystring"token" != "$token$")
24、60; /持有令牌
25、0; string tokenvalue = request.querystring"token" /調(diào)用webservice獲取主站憑證
26、0; sso.sitea.refpassport.tokenservice tokenservice = new sso.sitea.refpassport.tokenservice(); &
27、#160; object o = tokenservice.tokengetcredence(tokenvalue); if (o != null)
28、 /令牌正確&
29、#160; session"token" = o;
30、0; response.write("恭喜,令牌存在,您被授權(quán)訪問該頁面!");
31、; else &
32、#160; /令牌錯誤 re
33、sponse.redirect(this.replacetoken();
34、 else
35、160; /未持有令牌 response.redirect(this.replacetoken();
36、 /未進行令牌驗證,去主站
37、驗證 else
38、 response.redirect(this.gettokenurl(); base.
39、onload(e); / <summary> / 獲取帶令牌請求的url / 在當前url中附加上令牌請求參數(shù)
40、; / </summary> / <returns></returns> private string gettokenurl()
41、160; string url = request.url.absoluteuri; regex reg = new regex(".*?.+=.+$"); if (re
42、g.ismatch(url) url += "&token=$token$" else &
43、#160; url += "?token=$token$" return " / <summary>
44、160; / 去掉url中的令牌 / 在當前url中去掉令牌參數(shù) / </summary> / <returns></returns> &
45、#160; private string replacetoken() string url = request.url.absoluteuri;
46、url = regex.replace(url, "(?|&)token=.*", "", regexoptions.ignorecase); return " /end class
47、60; 用戶退出:用戶退出時分別清空主站憑證與當前分站憑證。如果要求a站點退出,b、c站點也退出,可自行擴展接口清空每個分站憑證。 主站過期憑證/令牌清除:定時清除(datatable)cache“cert”中timeout字段超過當前時間的記錄。單點登錄(single sign on),簡稱為 sso,是目前比較流行的企業(yè)業(yè)務(wù)整合的解決方案之一。sso的定義是在多個應用系統(tǒng)中,用戶只需要登錄一次就可以訪問所有相互信任的應用系統(tǒng)。通常情況下運維內(nèi)控審計系統(tǒng)、4a系統(tǒng)或者都包含
48、此項功能,目的是簡化賬號登陸過程并保護賬號和密碼安全,對賬號進行統(tǒng)一管理。企業(yè)應用集成(eai, enterprise application integration)。企業(yè)應用集成可以在不同層面上進行:例如在數(shù)據(jù)存儲層面上的“數(shù)據(jù)大集中”,在傳輸層面上的“通用數(shù)據(jù)交換平臺”,在應用層面上的“業(yè)務(wù)流程整合”,和用戶界面上的“通用企業(yè)門戶”等等。事實上,還有一個層面上的集成變得越來越重要,那就是“身份認證”的整合,也就是“單點登錄”。在信息安全管理中,訪問控制(access controls)環(huán)繞四個過程:identification;authentication;authorization;a
49、ccountability。單點登錄(single sign on)屬于authorization授權(quán)系統(tǒng),除單點登錄外還包括:lightweight directory access protocol 和 authorization ticket。(michael e. whitman (2011) management of information security kennesaw university)編輯本段技術(shù)實現(xiàn)機制當用戶第一次訪問應用系統(tǒng)1的時候,因為還沒有登錄,會被引導到認證系統(tǒng)中進行登錄;根據(jù)用戶提供的登錄信息,認證系統(tǒng)進行身份效驗,如果通過效驗,應該返
50、回給用戶一個認證的憑據(jù)ticket;用戶再訪問別的應用的時候,就會將這個ticket帶上,作為自己認證的憑據(jù),應用系統(tǒng)接受到請求之后會把ticket送到認證系統(tǒng)進行效驗,檢查ticket的合法性。如果通過校驗,用戶就可以在不用再次登錄的情況下訪問應用系統(tǒng)2和應用系統(tǒng)3了。編輯本段技術(shù)實現(xiàn)及應用優(yōu)勢技術(shù)實現(xiàn)以金萬維單點登錄為例: 如圖所示:統(tǒng)一的身份認證系統(tǒng)主要功能是將用戶的登錄信息和用戶信息庫相比較,對用戶進行登錄認證;認證成功后,認證系統(tǒng)應該生成統(tǒng)一的認證標志(ticket),返還給用戶。另外,認證系統(tǒng)還應該對ticket進行效驗,判斷其有效性。整個系統(tǒng)可以存在兩個以上
51、的認證服務(wù)器,這些服務(wù)器甚至可以是不同的產(chǎn)品。認證服務(wù)器之間要通過標準的通訊協(xié)議,互相交換認證信息,就能完成更高級別的單點登錄。應用優(yōu)勢單點登錄:用戶只需登錄一次,即可通過單點登錄系統(tǒng)(etruesso)訪問后臺的多個 應用系統(tǒng),二次登陸時無需重新輸入用戶名和密碼c/s單點登錄解決方案:無需修改任何現(xiàn)有的應用系統(tǒng)服務(wù)端和客戶端即可實現(xiàn)c/s單點登錄系統(tǒng)即裝即用:通過簡單的配置,無須用戶修改任何現(xiàn)有b/s、c/s應用系統(tǒng)即可使用應用靈活性:內(nèi)嵌金萬維動態(tài)域名解析系統(tǒng)(gnhost),可獨立實施,也可結(jié)合金萬維異速聯(lián)/天聯(lián)產(chǎn)品使用基于角色訪問控制:根據(jù)用戶的角色和url實現(xiàn)訪問控制功能全面的日志審
52、計:精確地記錄用戶的日志,可按日期、地址、用戶、資源等信息對日志進行查詢、統(tǒng)計和分析集群:通過集群功能,實現(xiàn)多臺服務(wù)器之間的動態(tài)負載均衡傳輸加密:支持多種對稱和非對稱加密算法,保證用戶信息在傳輸過程中不被竊取和篡改可擴展性:對后續(xù)的業(yè)務(wù)系統(tǒng)擴充和擴展有良好的兼容性存在的問題與需求奇正藏藥集團公司坐落于蘭州,在西藏、北京、上海等地擁有多個分子公司,并在全國各大城市設(shè)有辦事處,隨著業(yè)務(wù)的快速發(fā)展與壯大,集團公司已經(jīng)意識到信息化是實現(xiàn)企業(yè)終極目標的重要手段,自2000年開始,公司先后實施了erp、bpm、hr、eip、企業(yè)郵局、騰訊通平臺、oa、財務(wù)等多套管理系統(tǒng),實現(xiàn)公司各項業(yè)務(wù)流程及管理流程的信
53、息化、自動化。然而,隨著業(yè)務(wù)數(shù)量的不斷增加,各系統(tǒng)之間互不兼容造成的信息共享性差、需要記憶多套密碼、客戶端維護成本高等問題日益凸顯,一些花巨資購買并實施數(shù)月的系統(tǒng)運用效果遠不如預期理想。為了確保業(yè)務(wù)的高效運行與管理的高效執(zhí)行,企業(yè)急需優(yōu)化信息化方案:第一, 如何實現(xiàn)公司各種業(yè)務(wù)流程及信息資源的全面整合?第二, 如何簡化各種信息系統(tǒng)的使用方式,降低使用成本?第三, 如何降低信息系統(tǒng)維護與管理成本?解決方案實現(xiàn)資源整合:為了解決第一個問題,即實現(xiàn)各信息系統(tǒng)之間的全面整合,集團公司引進了企業(yè)信息門戶(eip),即將各種應用系統(tǒng)(諸如erp、bpm、hr、oa、企業(yè)郵局等)、數(shù)據(jù)資源和互聯(lián)網(wǎng)資源統(tǒng)一集
54、到企業(yè)信息門戶之下,根據(jù)每個用戶使用特點和角色的不同,形成個性化的應用界面,并通過對事件和消息的處理、傳輸把用戶有機地聯(lián)系在一起。簡化系統(tǒng)應用:在實施eip的過程中,集團公司使用金萬維單點登錄eturesso解決用戶需要記錄多個系統(tǒng)賬號的問題,用戶只需要在第一次訪問信息系統(tǒng)時,輸入用戶名與密碼,以后再訪問同一個系統(tǒng)資源時,無需再次輸入,由單點登錄系統(tǒng)自動登錄。降低信息維護成本:金萬維異速聯(lián)(e-soonlink)實現(xiàn)c/s分布式軟件的集中式部署,將管理系統(tǒng)服務(wù)器端與客戶端統(tǒng)一部署在客戶服務(wù)器中心,任何授權(quán)客戶機都能夠以web形式訪問,并更新數(shù)據(jù),輕松實現(xiàn)了系統(tǒng)在廣域網(wǎng)中的局域網(wǎng)應用。奇正藏藥集
55、團在實施異速聯(lián)系統(tǒng)之后,無需在每個用戶客戶機安裝每套信息系統(tǒng)的客戶端軟件,因此對客戶機硬件配置要求降低,另外,無需對每個客戶機進行安裝配置和維護,大大減少了安裝維護的工作量,降低了用戶數(shù)量日益增長所產(chǎn)生的信息化成本。淺析用戶權(quán)限管理系統(tǒng)中的單點登錄概述:用戶權(quán)限管理系統(tǒng)中的單點登錄是一種常用于企業(yè)內(nèi)部網(wǎng)絡(luò)的訪問網(wǎng)絡(luò)技術(shù),可以將企業(yè)中所有域的用戶登錄和用戶賬號管理進行集中。 用戶權(quán)限管理系統(tǒng)中的單點登錄是一種常用于企業(yè)內(nèi)部網(wǎng)絡(luò)的訪問網(wǎng)絡(luò)技術(shù),可以將企業(yè)中所有域的用戶登錄和用戶賬號管理進行集中。 如果在權(quán)限管理系統(tǒng)中
56、不引入單點登錄,在企業(yè)中承擔審批權(quán)限的人員對于企業(yè)中的各種應用系統(tǒng)如crm、oa、hr等,將需要記住多個系統(tǒng)的用戶登錄信息,此外還需要多次的進行登錄操作,極大的影響了信息化管理的快捷性和高效性。 另一方面多個應用系統(tǒng)需要多個用戶管理,在一方面也為系統(tǒng)管理員維護系統(tǒng)增加了工作量。如果在一個企業(yè)中有6個應用系統(tǒng),一次若是變更10個人員,系統(tǒng)管理員也需要維護60個人的信息,然而想這樣的企業(yè)調(diào)整的人員信息肯定不止10人,這中原始的信息管理方法極大的阻礙的信息管理的高效性。 通過單點登錄功能,每個用戶只需要記錄一個用戶名和密碼,登錄
57、一個系統(tǒng)之后,即可實現(xiàn)多個系統(tǒng)的透明跳轉(zhuǎn)。還可進行實行統(tǒng)一的用戶管理系統(tǒng),系統(tǒng)管理員也值需要維護一套人員信息,改變信息時通過平臺接口同步更新至各個應用系統(tǒng),實現(xiàn)人員系統(tǒng)單次維護全公司同步變更,大大提高了工作效率。 慧都upms通用用戶權(quán)限系統(tǒng)現(xiàn)全面升級,針對不同應用系統(tǒng)提供了用戶權(quán)限模塊的基礎(chǔ)框架和通用模型,還計入了包括單點登錄在內(nèi)的一些新功能,幫助開發(fā)者快速實施和開發(fā)出符合不同需求的用戶權(quán)限管理模塊。 通過慧都的upms通用用戶權(quán)限系統(tǒng),用戶只需要對接入的應用系統(tǒng)設(shè)置勾選開啟單點登錄,便可只輸入一次用戶名密碼,
58、即可訪問權(quán)限允許的所有接入系統(tǒng),如下圖: 在這次的upms通用用戶權(quán)限系統(tǒng)升級中加入了單點登錄功能,用戶可在upms中,可對接入系統(tǒng)進行進行勾選設(shè)置,來確認是否開啟單點登錄功能,如下圖:通過upms通用用戶權(quán)限系統(tǒng)中的單點登錄可實現(xiàn)多種價值:· 節(jié)省用戶在不同系統(tǒng)中登錄所用時· 減少用戶登錄出錯的幾率· 強化了安全性· 減少系統(tǒng)管理員增、刪、改用戶權(quán)限時間· 不用處理或是保存多個系統(tǒng)用戶的認證信息· 簡單操作實現(xiàn)用戶登錄和賬號的集中管理采用cas原理構(gòu)建單點登錄單 點登錄(single s
59、ign on , 簡稱 sso )是目前比較流行的服務(wù)于企業(yè)業(yè)務(wù)整合的解決方案之一, sso 使得在多個應用系統(tǒng)中,用戶 只需要登錄一次就可以訪問所有相互信任的應用系統(tǒng)。ibm對sso有一個形象的解釋“單點登錄、全網(wǎng)漫游”。 1.cas 介紹 cas 是 yale 大學發(fā)起的一個開源項目,旨在為 web 應用系統(tǒng)提供一種可靠的單點登錄方法,cas 在 2004 年 12 月正式成為
60、160;ja-sig 的一個項目。cas 具有以下特點:· 開源的企業(yè)級單點登錄解決方案。 · cas server 為需要獨立部署的 web 應用。 · cas client 支持非常多的客戶端(這里指單點登錄系統(tǒng)中的各個 web 應用),包括 java, .net, php, perl, apache, uportal, ruby 等。 2.cas
61、60;原理和協(xié)議 從 結(jié)構(gòu)上看,cas 包含兩個部分: cas server 和 cas client。cas server 需要獨立部署,主要負責對用戶的認證工 作;cas client 負責處理對客戶端受保護資源的訪問請求,需要登錄時,重定向到 cas server。圖1 是 cas 最基本的協(xié)議過程:圖 1. cas 基礎(chǔ)協(xié)議cas client 與 受保護的客戶端應用部署在一起,
62、以 filter 方式保護受保護的資源。(1)對于訪問受保護資源的每個 web 請求,cas client 會分析該請求 的 http 請求中是否包含 service ticket,如果沒有,則說明當前用戶尚未登錄。(2)于是將請求重定向到指定好 的 cas server 登錄地址,并傳遞 service (也就是要訪問的目的資源地址),以便登錄成功過后轉(zhuǎn)回該地址。(3)用戶輸入認 證信息,如果登錄成功,cas server
63、隨機產(chǎn)生一個相當長度、唯一、不可偽造的 service ticket,并緩存以待將來驗證。(4)系統(tǒng)自 動重定向到 service (也就是要訪問的目的資源地址)地址,并為客戶端瀏覽器設(shè)置一個 ticket granted cookie(tgc)。(5,6)cas client 在拿 到 service 和新產(chǎn)生的 ticket 過后,與 cas server 進行身份核實,以確 保 service ticket 的
64、合法性。在該協(xié)議中,所有與 cas 的交互均采用 ssl 協(xié)議,確保,st 和 tgc 的安全性。協(xié)議工作過程中會有 2 次重定向的過程,但是 cas client 與 cas server 之間進行 ticket 驗證的過程對于用戶是透明的。另外,cas 協(xié)議中還提供了 proxy (代理)模式,以適應更加高級、復雜的應用場景,具體介紹可以參考 cas 官方網(wǎng)站上的相關(guān)文檔。
65、 · 用戶在單點登錄服務(wù)器的登錄頁面中,輸入用戶名和密碼。· 然后單點登錄服務(wù)器會對用戶名和密碼進行認證。 認證本身并不是單點登錄服務(wù)器的功能,因此,通常會引入某種認證機制。認證機制可以有很多種,例如自己寫一個認證程序,或者使用一些標準的認證方法,例如 ldap或者數(shù)據(jù)庫等等。在大多數(shù)情況下,會使用ldap進行認證。這是因為ldap在處理用戶登錄方面,有很多獨特的優(yōu)勢,這在本文的后面還會比較詳細 地進行介紹。· 認證通過之后,單點登錄服務(wù)器會和應用程序進行一個比較復雜的交互,這通常是某種授權(quán)機制。cas使用的是所謂的t
66、icket。具體這點后面還會介紹。· 授權(quán)完成后,cas把頁面重定向,回到web應用。web應用此時就完成了成功的登錄(當然這也是單點登錄的客戶端,根據(jù)返回的ticket信息進行判斷成功的)。· 然后單點登錄服務(wù)器會在客戶端創(chuàng)建一個cookie。注意,是在用戶的客戶端,而不是服務(wù)端創(chuàng)建一個cookie。這個cookie是一個加密的cookie,其中保存了用戶登錄的信息。· 如 果用戶此時希望進入其他web應用程序,則安裝在這些應用程序中的單點登錄客戶端,首先仍然會重定向到cas服務(wù)器。不過此時cas服務(wù)器不再要求用戶輸 入用戶名和密碼,而是首先自動尋找cookie
67、,根據(jù)cookie中保存的信息,進行登錄。登錄之后,cas重定向回到用戶的應用程序。這樣,就不再需要用戶繼續(xù)輸入用戶名和密碼,從而實現(xiàn)了單點登錄。注意,這種單點登錄體系中,并沒有通過http進行密碼的傳遞(但是有用戶名的傳遞),因此是十分安全的。cas 被設(shè)計為一個獨立的web應用,目前是通過若干個java servlets來實現(xiàn)的。cas必須運行在支持ssl的web服務(wù)器至上。應用程序可以通過三個url路徑來使用cas,分別是登錄url(login url),校驗url(validation url)和登出url(logout url)。
68、60; · 應用程序一開始,通常跳過原來的登陸界面,而直接轉(zhuǎn)向cas自帶的登錄界面。當然也可以在應用程序的主界面上增加一個登錄之類的按鈕,來完成跳轉(zhuǎn)工作。· 如果用戶喜歡的話,也可以手工直接進入cas的登錄界面,先進行登錄,在啟動其他的應用程序。不過這種模式主要用于測試環(huán)境。· cas的登錄界面處理所謂的“主體認證”。它要求用戶輸入用戶名和密碼,就像普通的登錄界面一樣。· 主體認證時,cas獲取用戶名和密碼,然后通過某種認證機制進行認證。通常認證機制是ldap。· 為了進行以后的單點登錄,cas向瀏覽器送回一個所謂的“內(nèi)存
69、cookie”。這種cookie并不是真的保存在內(nèi)存中,而只是瀏覽器一關(guān)閉,cookie就自動過期。這個cookie稱為“ticket-granting cookie”,用來表明用戶已經(jīng)成功地登錄。· 認證成功后,cas服務(wù)器創(chuàng)建一個很長的、隨機生成的字符串,稱為“ticket”。隨后,cas將這個ticket和成功登錄的用戶,以及服務(wù)聯(lián)系在一起。這個ticket是一次性使用的一種憑證,它只對登錄成功的用戶及其服務(wù)使用一次。使用過以后立刻失效。· 主體認證完成后,cas將用戶的瀏覽器重定向,回到原來的應用。cas客戶端,在從應用轉(zhuǎn)向cas的時候,同時也會記錄原始的url,因
70、此cas知道誰在調(diào)用自己。cas重定向的時候,將ticket作為一個參數(shù)傳遞回去。· 例 如原始應用的網(wǎng)址是 /· cas完成主體認證后,會使用下面url進行重定向 st-2-7fahvdq0rydqxhfbikkgfycrcoshrtsfz2w-20。· 收到ticket之后,應用程序需要驗證ticket。這是通過將ticket 傳遞給一個校驗url來實現(xiàn)的。校驗url也是cas服務(wù)器提供的。· cas通過校驗路徑獲得了ticket之后,通過內(nèi)部的數(shù)據(jù)庫對其進行判斷。如果判斷是有效性,則返回一個netid給應用程序。· 隨后cas將ticke
71、t作廢,并且在客戶端留下一個cookie。· 以后其他應用程序就使用這個cookie進行認證(當然通過cas的客戶端),而不再需要輸入用戶名和密碼。單點登錄(sso)的技術(shù)被越來越廣泛地運用到各個領(lǐng)域的軟件系統(tǒng)當中。本文從業(yè)務(wù)的角度分析了單點登錄的需求和應用領(lǐng)域;從技術(shù)本身的角度分析了單點登錄技術(shù)的內(nèi)部機制和實現(xiàn)手段,并且給出web-sso和桌面sso的實現(xiàn)、源代碼和詳細講解;還從安全和性能的角度對現(xiàn)有的實現(xiàn)技術(shù)進行進一步分析,指出相應的風險和需要改進的方面。本文除了從多個方面和角度給出了對單點登錄(sso)的全面分析,還并且討論了如何將現(xiàn)有的應用和sso服務(wù)結(jié)合起來,能夠幫助應用架
72、構(gòu)師和系統(tǒng)分析人員從本質(zhì)上認識單點登錄,從而更好地設(shè)計出符合需要的安全架構(gòu)。 關(guān)鍵字:sso, java, j2ee, jaas 1 什么是單點登陸 單點登錄(single sign on),簡稱為 sso,是目前比較流行的企業(yè)業(yè)務(wù)整合的解決方案之一。sso的定義是在多個應用系統(tǒng)中,用戶只需要登錄一次就可以訪問所有相互信任的應用系統(tǒng)。 較大的企業(yè)內(nèi)部,一般都有很多的業(yè)務(wù)支持系統(tǒng)為其提供相應的管理和it服 務(wù)。例如財務(wù)系統(tǒng)為財務(wù)人員提供財務(wù)的管理、計算和報表服務(wù);人事系統(tǒng)為人事部門提供全公司人員的維護服務(wù);各種業(yè)務(wù)系統(tǒng)為公司內(nèi)部不同的業(yè)務(wù)提供不同的 服務(wù)等
73、等。這些系統(tǒng)的目的都是讓計算機來進行復雜繁瑣的計算工作,來替代人力的手工勞動,提高工作效率和質(zhì)量。這些不同的系統(tǒng)往往是在不同的時期建設(shè)起來 的,運行在不同的平臺上;也許是由不同廠商開發(fā),使用了各種不同的技術(shù)和標準。如果舉例說國內(nèi)一著名的it公司(名字隱去),內(nèi)部共有60多個業(yè)務(wù)系統(tǒng),這些系統(tǒng)包括兩個不同版本的sap的erp系統(tǒng),12個不同類型和版本的數(shù)據(jù)庫系統(tǒng),8個不同類型和版本的操作系統(tǒng),以及使用了3種不同的防火墻技術(shù),還有數(shù)十種互相不能兼容的協(xié)議和標準,你相信嗎?不要懷疑,這種情況其實非常普遍。每一個應用系統(tǒng)在運行了數(shù)年以后,都會成為不可替換的企業(yè)it架構(gòu)的一部分,如下圖所示。
74、隨 著企業(yè)的發(fā)展,業(yè)務(wù)系統(tǒng)的數(shù)量在不斷的增加,老的系統(tǒng)卻不能輕易的替換,這會帶來很多的開銷。其一是管理上的開銷,需要維護的系統(tǒng)越來越多。很多系統(tǒng)的數(shù) 據(jù)是相互冗余和重復的,數(shù)據(jù)的不一致性會給管理工作帶來很大的壓力。業(yè)務(wù)和業(yè)務(wù)之間的相關(guān)性也越來越大,例如公司的計費系統(tǒng)和財務(wù)系統(tǒng),財務(wù)系統(tǒng)和人事系 統(tǒng)之間都不可避免的有著密切的關(guān)系。 為了降低管理的消耗,最大限度的重用已有投資的系統(tǒng),很多企業(yè)都在進行著企業(yè)應用集成(eai)。 企業(yè)應用集成可以在不同層面上進行:例如在數(shù)據(jù)存儲層面上的“數(shù)據(jù)大集中”,在傳輸層面上的“通用數(shù)據(jù)交換平臺”,在應用層面上的“業(yè)務(wù)流程整合”,和用 戶界面上的“通用企
75、業(yè)門戶”等等。事實上,還用一個層面上的集成變得越來越重要,那就是“身份認證”的整合,也就是“單點登錄”。 通常來說,每個單獨的系統(tǒng)都會有自己的安全體系和身份認證系統(tǒng)。整合以前,進入每個系統(tǒng)都需要進行登錄,這樣的局面不僅給管理上帶來了很大的困難,在安全方面也埋下了重大的隱患。下面是一些著名的調(diào)查公司顯示的統(tǒng)計數(shù)據(jù): 用戶每天平均 16 分鐘花在身份驗證任務(wù)上 - 資料來源: ids 頻繁的 it 用戶平均有 21 個密碼 - 資料來源: nta monitor password survey 49% 的人寫下了其密碼,而 67% 的人很少改變它們
76、;每 79 秒出現(xiàn)一起身份被竊事件 - 資料來源:national small business travel assoc 全球欺騙損失每年約 12b - 資料來源:comm fraud control assoc 到 2007 年,身份管理市場將成倍增長至 $4.5b - 資料來源:ids 使用“單點登錄”整合后,只需要登錄一次就可以進入多個系統(tǒng),而不需要重新登錄,這不僅僅帶來了更好的用戶體驗,更重要的是降低了安全的風險和管理的消耗。請看下面的統(tǒng)計數(shù)據(jù): 提高 it 效率:對于每 1000 個受管用戶,每用戶可節(jié)省$70k 幫助臺呼叫減少至少
77、1/3,對于 10k 員工的公司,每年可以節(jié)省每用戶 $75,或者合計 $648k 生產(chǎn)力提高:每個新員工可節(jié)省 $1k,每個老員工可節(jié)省 $350 資料來源:giga roi 回報:7.5 到 13 個月 資料來源:gartner 另外,使用“單點登錄”還是soa時代的需求之一。在面向服務(wù)的架構(gòu)中,服務(wù)和服務(wù)之間,程序和程序之間的通訊大量存在,服務(wù)之間的安全認證是soa應用的難點之一,應此建立“單點登錄”的系統(tǒng)體系能夠大大簡化soa的安全問題,提高服務(wù)之間的合作效率。 2 單點登陸的技術(shù)實現(xiàn)機制 隨著sso技術(shù)的流行,sso的產(chǎn)品也是滿天飛揚
78、。所有著名的軟件廠商都提供了相應的解決方案。在這里我并不想介紹自己公司(sun microsystems)的產(chǎn)品,而是對sso技術(shù)本身進行解析,并且提供自己開發(fā)這一類產(chǎn)品的方法和簡單演示。有關(guān)我寫這篇文章的目的,請參考我的博客(單 點登錄的機制其實是比較簡單的,用一個現(xiàn)實中的例子做比較。頤和園是北京著名的旅游景點,也是我常去的地方。在頤和園內(nèi)部有許多獨立的景點,例如“蘇州 街”、“佛香閣”和“德和園”,都可以在各個景點門口單獨買票。很多游客需要游玩所有德景點,這種買票方式很不方便,需要在每個景點門口排隊買票,錢包拿 進拿出的,容易丟失,很不安全。于是絕大多數(shù)游客選擇在大門口買一張通票(也叫套票
79、),就可以玩遍所有的景點而不需要重新再買票。他們只需要在每個景點門 口出示一下剛才買的套票就能夠被允許進入每個獨立的景點。 單點登錄的機制也一樣,如下圖所示,當用戶第一次訪問應用系統(tǒng)1的時候,因為還沒有登錄,會被引導到認證系統(tǒng)中進行登錄(1);根據(jù)用戶提供的登錄信息,認證系統(tǒng)進行身份效驗,如果通過效驗,應該返回給用戶一個認證的憑據(jù)ticket(2);用戶再訪問別的應用的時候(3,5)就會將這個ticket帶上,作為自己認證的憑據(jù),應用系統(tǒng)接受到請求之后會把ticket送到認證系統(tǒng)進行效驗,檢查ticket的合法性(4,6)。如果通過效驗,用戶就可以在不用再次登錄的情況下訪問應用系統(tǒng)2
80、和應用系統(tǒng)3了。 從上面的視圖可以看出,要實現(xiàn)sso,需要以下主要的功能: 所有應用系統(tǒng)共享一個身份認證系統(tǒng)。 統(tǒng)一的認證系統(tǒng)是sso的前提之一。認證系統(tǒng)的主要功能是將用戶的登錄信息和用戶信息庫相比較,對用戶進行登錄認證;認證成功后,認證系統(tǒng)應該生成統(tǒng)一的認證標志(ticket),返還給用戶。另外,認證系統(tǒng)還應該對ticket進行效驗,判斷其有效性。 所有應用系統(tǒng)能夠識別和提取ticket信息 要實現(xiàn)sso的功能,讓用戶只登錄一次,就必須讓應用系統(tǒng)能夠識別已經(jīng)登錄過的用戶。應用系統(tǒng)應該能對ticket進行識別和提取,通過與認證系統(tǒng)的通訊,能自動
81、判斷當前用戶是否登錄過,從而完成單點登錄的功能。 上面的功能只是一個非常簡單的sso架構(gòu),在現(xiàn)實情況下的sso有著更加復雜的結(jié)構(gòu)。有兩點需要指出的是: 單一的用戶信息數(shù)據(jù)庫并不是必須的,有許多系統(tǒng)不能將所有的用戶信息都集中存儲,應該允許用戶信息放置在不同的存儲中,如下圖所示。事實上,只要統(tǒng)一認證系統(tǒng),統(tǒng)一ticket的產(chǎn)生和效驗,無論用戶信息存儲在什么地方,都能實現(xiàn)單點登錄。 統(tǒng)一的認證系統(tǒng)并不是說只有單個的認證服務(wù)器,如下圖所示,整個系統(tǒng)可以存在兩個以上的認證服務(wù)器,這些服務(wù)器甚至可以是不同的產(chǎn)品。認證服務(wù)器之間要通過標準的通訊協(xié)議,互相交換認證信息,就能完成更高級別的單點登錄。如下圖,當用戶在訪問應用系統(tǒng)1時,由第一個認證服務(wù)器進行認證后,得到由此服務(wù)器產(chǎn)生的ticket。當他訪問應用系統(tǒng)4的時候,認證服務(wù)器2能夠識別此ticket是由第一個服務(wù)器產(chǎn)生的,通過認證服務(wù)器之間標準的通訊協(xié)議(例如saml)來交換認證信息,仍然能夠完成sso的功能。 3 web-sso的實現(xiàn) 隨著互聯(lián)網(wǎng)的高速發(fā)展,web應用幾乎統(tǒng)治了絕大部分的軟件應用系統(tǒng),因此web-sso是s
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 脾胃虛弱動畫冬病夏治
- 大叔爺爺課件教學課件
- 2024年分子篩項目投資申請報告代可行性研究報告
- 物聯(lián)網(wǎng)畢業(yè)設(shè)計論文
- 龍蝦的課件教學課件
- 牙體牙髓病常用藥物
- 2.1.2碳酸鈉和碳酸氫鈉 課件高一上學期化學人教版(2019)必修第一冊
- 糖尿病胰島素注射治療
- 新公司企業(yè)規(guī)劃
- 合唱團說課稿
- 常用鋼材牌號及化學成分表
- 高大墻體混凝土澆筑技術(shù)交底(非常詳細)
- 建設(shè)項目全過程工程咨詢管理實施規(guī)劃
- 現(xiàn)代控制理論課后習題答案
- 地方應用型高校新工科專業(yè)建設(shè)面臨的問題與對策
- 水平定向鉆施工方案
- 金華市地方課程《錦繡金華》八年級教案
- 雷諾現(xiàn)象及雷諾氏病PPT課件
- 碼頭報批流程圖
- IE 標準工時(完整版)
- 機械基礎(chǔ)軸上零件軸向固定公開課課件
評論
0/150
提交評論