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 >

转载于:https://www.cnblogs.com/CSharp/archive/2008/08/05/1261104.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值