首页 > 编程 > .NET > 正文

ASP.NET实现单点登陆(SSO)适用于多种情况

2024-07-10 13:28:10
字体:
来源:转载
供稿:网友
这篇文章主要介绍了ASP.NET在不同情况下实现单点登陆(SSO)的方法,在同主域但不同子域之间实现单点登陆等等
 
 

第一种:同主域但不同子域之间实现单点登陆

Form验证其实是基于身份cookie的验证。客户登陆后,生成一个包含用户身份信息(包含一个ticket)的cookie,这个cookie的名字就是在web.config里Authentication节form设定的name信息,如

 

复制代码代码如下:

<authentication mode="Forms">
<forms loginUrl="login.aspx" name=".ASPXAUTH" path="/" protection="All" domain=".zuowenjun.cn"></forms>
</authentication>

这里,.ASPNETAUTH就是这个Cookie的名字。通过在Request.Cookies集合里包含这个cookie,实现用户身份信息的传递。所以,共享身份验证信息的思路很简单:只要这个身份验证cookie能在自域名中共享,Form验证信息自然可以共享!

 

代码实现:
 

string userData = JsonHelper.ScriptSerialize(user);
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, user.userid.ToString(), DateTime.Now, DateTime.Now.AddHours(4), false, userData);
HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, FormsAuthentication.Encrypt(ticket));//加密身份信息,保存至Cookie
cookie.Domain = ".zuowenjun.cn";
Response.Cookies.Add(cookie);
?
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表