版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
誰都能看懂的單點登錄(SSO)實現(xiàn)方式SSO的基本概念SSO英文全稱SingleSignOn(單點登錄)。SSO是在多個應用系統(tǒng)中,用戶只需要登錄一次就可以訪問所有相互信任的應用系統(tǒng)。它包括可以將這次主要的登錄映射到其他應用中用于同一個用戶的登錄的機制。它是目前比較流行的企業(yè)業(yè)務整合的解決方案之一。(本段內(nèi)容來自百度百科)今天這篇文章將介紹SSO的一種實現(xiàn)方式,代碼超簡單,僅用來驗證我的思路是否可行,具體細節(jié)請大家來完善!二級域名的單點登錄什么是二級域名呢?例如:sitel.domaisite2.domai對于二級域名的單點登錄,我們可以非常方便的通過共享cookie來實現(xiàn),簡單的說,就是在設置Form票據(jù)的時候,將cookie的domain設置為頂級域名即可,例如:HttpCookiecookie=newHttpCookie(FormsAuthCookieName,IIencryptedTicket);IIcookie.Expires=rememberMe?expirationDate:DateTime?MinValue;Icookie.HttpOnly=true;cookie.Path="/";cookie.Domain="";context.Response.Cookies?Set(cookie);這種方式不涉及跨域,當cookie的domain屬性設置為頂級域名之后,所有的二級域名都可以訪問到身份驗證的cookie,在服務器端只要驗證了這個cookie就可以實現(xiàn)身份的驗證。但是,當跨域的時候,例如:這個時候就不能共享cookie了,所以上面的解決方案就會失效。那么,要實現(xiàn)跨域的單點登錄該如何做呢?請繼續(xù)往下看??缬虻膯吸c登錄關于跨域的SSO的設計思路,我畫了一個簡單的流程圖:
杲杲_sso-client返|i首先,我將跨域的SSO分為SSO-Server和SSO-Client兩個部分,SSO-Client可以是多個的。SSO-ServerSSO-Server主要負責用戶登錄、注銷、為SSO-Client分配taken、驗證taken的工作。登錄和注銷采用的是Form認證方式,很多地方都有詳細的介紹,我之前也寫過一篇文章,想了解的可以去看看:asp.netForms身份驗證詳解SSO-Server分配Token為SSO-Client分配Token的部分,在SSO-Client請求SSO受信頁面的時候,檢查SSO-Server是否登錄,如果沒有登錄則跳轉(zhuǎn)到SSO-Server的登錄頁面,如果已登錄,則執(zhí)行分配Token的代碼,在分配完成以后將TokenID作為參數(shù)添加到returnUrl中,并跳轉(zhuǎn)到returnUrl,具體的分配代碼如下:T IIif(Domain.Security.SmartAuthenticate.LoginUser!=null)I{I1: //生成Token,并持久化TokenIIfDomain.SSO.Entity.SSOTokentoken=newEntity.SSOToken();1IIII1itoken.User=newEntity.SSOUser();1itoken.User?UserName=I1IDomain.Security.SmartAuthenticate.LoginUser.UserName;IItoken.LoginID=Session.SessionID;IIDomain.SSO.Entity.SSOToken.SSOTokenList?Add(token);IIIII: //拼接返回的url,參數(shù)中帶TokenIIIstringspliter=returnUrl.Contains('?')?"&":"?";IIreturnUrl=returnUrl+spliter+"token="+token.ID;IIIResponse.Redirect(returnUrl);II}當完成Token分配之后,頁面將帶有TokenID的參數(shù)跳轉(zhuǎn)到SSO-Client頁面,并在SSO-Client的Cookie中添加Token值,在以后的每次請求中,SSO-Client通過調(diào)用SSO-Server的服務來驗證Token的合法性。SSO-Server驗證Token我是通過WebService來驗證Token的。首先在SSO-Server定義一個WebService:II[WebMethod]publicEntity.SSOTokenValidateToken(stringtokenID)III{II;if(!KeepToken(tokenID))IIIreturnnull;IIIIIIIvartoken=Domain.SSO.Entity.SSOToken.SSOTokenList.Find(m=>IIm.ID==tokenID);IIIreturntoken;II}IiTIII■[WebMethod]publicboolKeepToken(stringtokenID)Iif{Ittvartoken=Domain.SSO.Entity.SSOToken.SSOTokenList.Find(m=>Im.ID==tokenID);if(token==null)returnfalse;if(token.IsTimeOut())returnfalse;token.AuthTime=DateTime.Now;returntrue;}ValidateToken用來驗證TokenID的合法性,KeepToken用來保持Token不會過期。SSO-Client通過調(diào)用Validate驗證Token,并得到當前的登錄用戶信息。接下來看看SSO-Client的實現(xiàn)。SSO-ClientSSO-Client作為受信系統(tǒng)來存在的,它自己沒有認證系統(tǒng),只能通過SSO-Server來完成用戶身份認證的工作。當用戶請求SSO-Client的受保護資源時,SSO-Client會首先是否有TokenID,如果存在TokenID,則調(diào)用SSO-Server的WebService來驗證這個TokenID是否合法;驗證成功以后將會返回SSOToken的實例,里面包含已登錄的用戶信息。具體代碼如下:if(!string.IsNullOrEmpty(tokenID))II{IIIAuthTokenService?AuthTokenServiceSoapClientclient=newIIAuthTokenService?AuthTokenServiceSoapClient();IIvartoken=client.ValidateToken(tokenID);IIiif(token!=null)II{II; this.lblMessage.Text="登錄成功,登錄用戶:"II+token.User?UserNameIII+"<aIIIhref='/logout?aspx?returnUrl="II+Server?UrlEncode("")II; +"'>退出</a>";II}IIelseIII:{IIIIIIIIResponse.Redirect("http://sso-server?com/sso.aspx?returnUrl="+IIIIIIIIServer?UrlEncode("/default?aspx"));}else{Response.Redirecp://sso-server?com/sso.aspx?returnUr1="+Server?UrlEncode("hTTp:///defauIT.aspx"));}源代碼文章中
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年空調(diào)銷售渠道拓展與品牌建設服務合同3篇
- 二零二五版合租房屋租賃合同-含裝修保證金條款3篇
- 二零二五版建筑設備租賃合同書范例2篇
- 二零二五版法院判決指導下的債務償還與再融資合同3篇
- 二零二五版第5章第5節(jié)合同擔保及供應鏈金融合作協(xié)議3篇
- 二零二五版合同部合同合規(guī)性審查與風險預警合同3篇
- 二零二五年度酒店物業(yè)服務質(zhì)量持續(xù)改進合同3篇
- 二零二五年青少年體育賽事服裝贊助合同3篇
- 二零二五版安防監(jiān)控設備研發(fā)與生產(chǎn)合同3篇
- 二零二五年度物流行業(yè)集體合同協(xié)議范本3篇
- 2024年08月云南省農(nóng)村信用社秋季校園招考750名工作人員筆試歷年參考題庫附帶答案詳解
- 防詐騙安全知識培訓課件
- 心肺復蘇課件2024
- 2024年股東股權繼承轉(zhuǎn)讓協(xié)議3篇
- 2024-2025學年江蘇省南京市高二上冊期末數(shù)學檢測試卷(含解析)
- 四川省名校2025屆高三第二次模擬考試英語試卷含解析
- 湖南財政經(jīng)濟學院專升本管理學真題
- 2024年認證行業(yè)法律法規(guī)及認證基礎知識
- 江蘇省建筑與裝飾工程計價定額(2014)電子表格版
- Proud-of-you中英文歌詞
- 基因的表達與調(diào)控.ppt
評論
0/150
提交評論