MOSS与业务系统的集成 之 单点登录

前面MOSS与业务系统的集成 自定义Membership实现Forms方式验证文章中,我们实现了两系统的用户集成,下面要解决的是两系统间的单点登录问题。

部署在两台不同的服务器上的系统,要实现单点登录,最好的办法就是使用Cookie共享来实现了。只要将两系统使用同一根域名,并且用户保存用户登录票据的Cookie名称,以及Cookie加解密密钥一致即可。

  1. 业务系统的写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 
         
  2. 业务系统的web.config修改
    <!-- Cookie名称与根域名需一致 -->
    < authentication  mode ="Forms" >
          
    < forms  name ="CookieName"   domain =".domain.com"  path ="/"   ></ forms >
    </ authentication >
  3. 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 >

你可能感兴趣的:(单点登录)