.Net單點(diǎn)登錄(SSO)解決方案.doc

.Net單點(diǎn)登錄(SSO)解決方案.doc

ID:25406786

大?。?18.51 KB

頁數(shù):42頁

時間:2018-11-20

.Net單點(diǎn)登錄(SSO)解決方案.doc_第1頁
.Net單點(diǎn)登錄(SSO)解決方案.doc_第2頁
.Net單點(diǎn)登錄(SSO)解決方案.doc_第3頁
.Net單點(diǎn)登錄(SSO)解決方案.doc_第4頁
.Net單點(diǎn)登錄(SSO)解決方案.doc_第5頁
資源描述:

《.Net單點(diǎn)登錄(SSO)解決方案.doc》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫

1、基于.Net的單點(diǎn)登錄(SSO)解決方案?????前些天一位朋友要我?guī)兔ψ鲆粏吸c(diǎn)登錄,其實(shí)這個概念早已耳熟能詳,但實(shí)際應(yīng)用很少,難得最近輕閑,于是決定通過本文來詳細(xì)描述一個SSO解決方案,希望對大家有所幫助。SSO的解決方案很多,但搜索結(jié)果令人大失所望,大部分是相互轉(zhuǎn)載,并且描述的也是走馬觀花。?????閑話少敘,進(jìn)入正題,我的想法是使用集中驗(yàn)證方式,多個站點(diǎn)集中Passport驗(yàn)證。?如下圖所示:?????為方便清晰描述,先定義幾個名詞,本文中出現(xiàn)之處均為如下含義。??????主站:Passport集中驗(yàn)證服務(wù)器?http://www.passpo

2、rt.com/?。??????分站:http://www.a.com/、http://www.b.com/、http://www.c.com/???????憑證:用戶登錄后產(chǎn)生的數(shù)據(jù)標(biāo)識,用于識別授權(quán)用戶,可為多種方式,DEMO中主站我使用的是Cache,分站使用Session。??????令牌:由Passport頒發(fā)可在各分站中流通的唯一標(biāo)識。?????OK,現(xiàn)在描述一下單點(diǎn)登錄的過程:?????情形一、匿名用戶:匿名用戶訪問分站a上的一個授權(quán)頁面,首先跳轉(zhuǎn)到主站讓用戶輸入帳號、密碼進(jìn)行登錄,驗(yàn)證通過后產(chǎn)生主站憑證,同時產(chǎn)生令牌,跳轉(zhuǎn)回分站a,此時

3、分站a檢測到用戶已持有令牌,于是用令牌再次去主站獲取用戶憑證,獲取成功后允許用戶訪問該授權(quán)頁面。同時產(chǎn)生分站a的本地憑證,當(dāng)該用戶需要再次驗(yàn)證時將先檢查本地憑證,以減少網(wǎng)絡(luò)交互。?????情形二、在分站a登錄的用戶訪問分站b:因?yàn)橛脩粼诜终綼登錄過,已持有令牌,所以分站b會用令牌去主站獲取用戶憑證,獲取成功后允許用戶訪問授權(quán)頁面。同時產(chǎn)生分站b的本地憑證。?????設(shè)計完成后,接下來是方案實(shí)現(xiàn)的一些關(guān)鍵點(diǎn):?????令牌:令牌由主站頒發(fā),主站頒發(fā)令牌同時生成用戶憑證,并記錄令牌與用戶憑證之間的對應(yīng)關(guān)系,以根據(jù)用戶提供的令牌響應(yīng)對應(yīng)的憑證;令牌要在各跨

4、域分站中進(jìn)行流通,所以DEMO中令牌我使用主站的Cookie,并指定Cookie.Domain="passport.com"。各分站如何共享主站的Cookie?從分站Redirect到主站頁面,然后該頁面讀取Cookie并以URL參數(shù)方式回傳即可,可在DEMO代碼中查看詳細(xì)實(shí)現(xiàn),當(dāng)然如果哪位有更好的令牌實(shí)現(xiàn)方式也拿出來分享。//產(chǎn)生令牌string?tokenValue?=?Guid.NewGuid().ToString().ToUpper();HttpCookie?tokenCookie?=?new?HttpCookie("Token");toke

5、nCookie.Values.Add("Value",?tokenValue);tokenCookie.Domain?=?"passport.com";Response.AppendCookie(tokenCookie);??????主站憑證:主站憑證是一個關(guān)系表,包含了三個字段:令牌、憑證數(shù)據(jù)、過期時間。有多種實(shí)現(xiàn)方式可供選擇,要求可靠的話用數(shù)據(jù)庫,要求性能的話用Cache,DEMO中我使用的是Cache中的DataTable。如下代碼所示:///?

///?初始化數(shù)據(jù)結(jié)構(gòu)///?///?///

6、?----------------------------------------------------///?

7、?token(令牌)?

8、?info(用戶憑證)?

9、?timeout(過期時間)?

10、///?

11、--------------------------------------------------

12、///?private?static?void?cacheInit(){????if?(HttpContext.Current.Cache["CERT"]?==?null)????{????????DataTable?dt?=

13、?new?DataTable();????????dt.Columns.Add("token",?Type.GetType("System.String"));????????dt.Columns["token"].Unique?=?true;????????dt.Columns.Add("info",?Type.GetType("System.Object"));????????dt.Columns["info"].DefaultValue?=?null;????????dt.Columns.Add("timeout",?Type.GetType(

14、"System.DateTime"));????????dt.Columns["timeout"].Defa

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。