MOSS与业务系统的集成 之 单点登录
前面MOSS与业务系统的集成 之 自定义Membership实现Forms方式验证文章中,我们实现了两系统的用户集成,下面要解决的是两系统间的单点登录问题。
部署在两台不同的服务器上的系统,要实现单点登录,最好的办法就是使用Cookie共享来实现了。只要将两系统使用同一根域名,并且用户保存用户登录票据的Cookie名称,以及Cookie加解密密钥一致即可。
- 业务系统的写cookie方式
1 protected static void WriteCookie(string userName, bool isPersistent)
2 {
3 FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
4 1,
5 userName,
6 DateTime.Now,
7 DateTime.Now.AddMinutes(80),
8 isPersistent,
9 userName,
10 FormsAuthentication.FormsCookiePath);
11 // Encrypt the ticket.
12 string encTicket = FormsAuthentication.Encrypt(ticket);
13 HttpCookie myCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encTicket);
14
15 //如果用户使用域名访问ADC,则在cookie上增加域名信息
16 if (IsValidDomain(HttpContext.Current.Request.Url.Host))
17 {
18 myCookie.Domain = FormsAuthentication.CookieDomain;
19 }
20
21 if (isPersistent)
22 {
23 myCookie.Expires = ticket.Expiration;
24 }
25 // Create the cookie.
26 HttpContext.Current.Response.Cookies.Add(myCookie);
27 }
28
29 protected static bool IsValidDomain(string strIn)
30 {
31 string strPattern = @"^\w+([-.]\w+)*\.\w+([-.]\w+)*$";
32 return System.Text.RegularExpressions.Regex.IsMatch(strIn, strPattern);
33 }
34 - 业务系统的web.config修改
<!--Cookie名称与根域名需一致-->
<authentication mode="Forms">
<forms name="CookieName" domain=".domain.com" path="/" ></forms>
</authentication> - Moss站点的web.config修改
<!--将MOSS站点web.config中machineKey配置复制到业务系统中,两系统保持一致即可 -->
<machineKey validationKey="C57043728999BCF9537BA55F5978F50722C91B26A0F9D34F"
decryptionKey="C57043728999BCF9537BA55F5978F50722C91B26A0F9D34F"
validation="SHA1" />
<!--Cookie名称与根域名也需一致-->
<authentication mode="Forms">
<forms name="CookieName" domain=".domain.com" path="/" ></forms>
</authentication>
原文地址:http://www.cnblogs.com/CSharp/archive/2008/08/05/1261104.html