一、什麼是單點登錄
單點登錄就是在多個web應用程序中,實現統一登錄方式,一但登錄了某web應 用程序,其它相關聯的web應用程序都無需再次登錄,一個地方退出,所有相關聯的 web應用程序都退出.
二、通過利用ASP.NET Forms驗證模式可以實現子域名(SubDomain)共享登陸下 的缺陷
要利用Asp.NET Form驗證模式實現同一主域下不同子域名共享登陸狀態需要進 行以下配置
配置Web.config
1.把Asp.net的認證模式改為Forms認證模式,domain 要等於你的應用程序對 應的域名,例如: .test.cn
<authentication mode="Forms">
<forms name=".ASPNETFORM" domain=".test.cn" loginUrl="/login.aspx" defaultUrl="/default.aspx"
protection="All" timeout="30" path="/" requireSSL="false" slidingExpiration="true"
enableCrossAppRedirects="false" cookieless="UseDeviceProfile" />
</authentication>
2.配置針對存儲在cookie中的票據信息進行加密解密的方式
<machineKey
validationKey="CF10047DB84FBA7F418BF30F9697B1D6EDDA3A90837F3C57B336B401 6E47986135B31B2432F7CB20A6858DFFB
E4E5ECD1451E17C91830993445D0EA5708BABBD" decryptionKey="5D37DDB652B86956" validation="SHA1"/>
備注:生成machineKey網址
http://www.aspnetresources.com/tools/keycreator.aspx
登陸創建驗證票據
1.應用程序登陸頁面(Login.aspx)輸入用戶名、密碼並驗證通過後,創建一張 加密過的驗證票據,並存儲在cookie中
//創建驗證票
FormsAuthenticationTicket ticket
= new FormsAuthenticationTicket(1, name, DateTime.Now,
DateTime.Now.AddDays(1d), false,
HttpContext.Current.Request.UserHostAddress
);
string authTicket = FormsAuthentication.Encrypt(ticket);
HttpCookie cookie = new HttpCookie (FormsAuthentication.FormsCookieName, authTicket);
cookie.Domain = ConfigurationManager.AppSettings["SSODomain"];
HttpContext.Current.Response.Cookies.Add (cookie);