版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
誰都能看懂的單點登錄(SSO)實現(xiàn)方式SSO的基本概念SSO英文全稱SingleSignOn(單點登錄)。SSO是在多個應(yīng)用系統(tǒng)中,用戶只需要登錄一次就可以訪問所有相互信任的應(yīng)用系統(tǒng)。它包括可以將這次主要的登錄映射到其他應(yīng)用中用于同一個用戶的登錄的機制。它是目前比較流行的企業(yè)業(yè)務(wù)整合的解決方案之一。(本段內(nèi)容來自百度百科)今天這篇文章將介紹SSO的一種實現(xiàn)方式,代碼超簡單,僅用來驗證我的思路是否可行,具體細節(jié)請大家來完善!二級域名的單點登錄什么是二級域名呢?例如:sitel.domaisite2.domai對于二級域名的單點登錄,我們可以非常方便的通過共享cookie來實現(xiàn),簡單的說,就是在設(shè)置Form票據(jù)的時候,將cookie的domain設(shè)置為頂級域名即可,例如:HttpCookiecookie=newHttpCookie(FormsAuthCookieName,IIencryptedTicket);IIcookie.Expires=rememberMe?expirationDate:DateTime?MinValue;Icookie.HttpOnly=true;cookie.Path="/";cookie.Domain="";context.Response.Cookies?Set(cookie);這種方式不涉及跨域,當(dāng)cookie的domain屬性設(shè)置為頂級域名之后,所有的二級域名都可以訪問到身份驗證的cookie,在服務(wù)器端只要驗證了這個cookie就可以實現(xiàn)身份的驗證。但是,當(dāng)跨域的時候,例如:這個時候就不能共享cookie了,所以上面的解決方案就會失效。那么,要實現(xiàn)跨域的單點登錄該如何做呢?請繼續(xù)往下看??缬虻膯吸c登錄關(guān)于跨域的SSO的設(shè)計思路,我畫了一個簡單的流程圖:
杲杲_sso-client返|i首先,我將跨域的SSO分為SSO-Server和SSO-Client兩個部分,SSO-Client可以是多個的。SSO-ServerSSO-Server主要負責(zé)用戶登錄、注銷、為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}當(dāng)完成Token分配之后,頁面將帶有TokenID的參數(shù)跳轉(zhuǎn)到SSO-Client頁面,并在SSO-Client的Cookie中添加Token值,在以后的每次請求中,SSO-Client通過調(diào)用SSO-Server的服務(wù)來驗證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,并得到當(dāng)前的登錄用戶信息。接下來看看SSO-Client的實現(xiàn)。SSO-ClientSSO-Client作為受信系統(tǒng)來存在的,它自己沒有認證系統(tǒng),只能通過SSO-Server來完成用戶身份認證的工作。當(dāng)用戶請求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)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 貴陽職業(yè)技術(shù)學(xué)院《試驗設(shè)計與數(shù)據(jù)處理》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025上海市安全員-C證考試(專職安全員)題庫附答案
- 2025江蘇省安全員《B證》考試題庫及答案
- 2025海南省建筑安全員C證考試(專職安全員)題庫附答案
- 廣州中醫(yī)藥大學(xué)《形體訓(xùn)練(Ⅱ)》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣州應(yīng)用科技學(xué)院《環(huán)境藝術(shù)專題設(shè)計》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣州現(xiàn)代信息工程職業(yè)技術(shù)學(xué)院《運動解剖學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣州鐵路職業(yè)技術(shù)學(xué)院《針織物設(shè)計與試織》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025四川建筑安全員B證(項目經(jīng)理)考試題庫
- 2025年福建建筑安全員《A證》考試題庫及答案
- 2024年股東股權(quán)繼承轉(zhuǎn)讓協(xié)議3篇
- 2025年中央歌劇院畢業(yè)生公開招聘11人歷年高頻重點提升(共500題)附帶答案詳解
- 北京市高校課件 開天辟地的大事變 中國近代史綱要 教學(xué)課件
- 監(jiān)事會年度工作計劃
- 2024年認證行業(yè)法律法規(guī)及認證基礎(chǔ)知識
- SVG無功補償培訓(xùn)
- 新生兒聽力篩查技術(shù)規(guī)范衛(wèi)生部2010年版
- 大貓英語分級閱讀 六級1 Arthur's Fantastic Party課件
- SCA自動涂膠系統(tǒng)培訓(xùn)講義
- LEC法取值標(biāo)準對照表
- 華中數(shù)控車床編程及操作
評論
0/150
提交評論