zoukankan      html  css  js  c++  java
  • 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>
  • 相关阅读:
    Docker 日志都在哪里?怎么收集?
    docker link 过时不再用了?那容器互联、服务发现怎么办?
    Centos7.0 配置docker 镜像加速
    使用docker搭建公司redmine服务器
    Jenkins pipeline:pipeline 使用之语法详解
    Xcode脚本自动化打包问题:xcrun: error: unable to find utility "PackageApplication", not a developer tool or in PATH
    java基础(7)---IO流
    java基础(6)---面向对象,类,包
    java基础(5)---内存分配
    java基础(4)---引用数据类型(数组、字符串、集合)
  • 原文地址:https://www.cnblogs.com/CSharp/p/1261104.html
Copyright © 2011-2022 走看看