惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

量子位
S
Securelist
MyScale Blog
MyScale Blog
Jina AI
Jina AI
罗磊的独立博客
The Cloudflare Blog
美团技术团队
博客园 - 叶小钗
阮一峰的网络日志
阮一峰的网络日志
博客园 - 三生石上(FineUI控件)
月光博客
月光博客
雷峰网
雷峰网
小众软件
小众软件
aimingoo的专栏
aimingoo的专栏
大猫的无限游戏
大猫的无限游戏
博客园 - Franky
博客园 - 聂微东
Y
Y Combinator Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
MongoDB | Blog
MongoDB | Blog
T
Tailwind CSS Blog
Attack and Defense Labs
Attack and Defense Labs
博客园_首页
Latest news
Latest news
Apple Machine Learning Research
Apple Machine Learning Research
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
The Hacker News
The Hacker News
G
GRAHAM CLULEY
Simon Willison's Weblog
Simon Willison's Weblog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
P
Proofpoint News Feed
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
U
Unit 42
D
Docker
Webroot Blog
Webroot Blog
N
Netflix TechBlog - Medium
T
Tor Project blog
C
Cyber Attacks, Cyber Crime and Cyber Security
L
LINUX DO - 最新话题
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
The Last Watchdog
The Last Watchdog
B
Blog
Recent Announcements
Recent Announcements
GbyAI
GbyAI
Microsoft Azure Blog
Microsoft Azure Blog
Security Latest
Security Latest
V2EX - 技术
V2EX - 技术
N
News | PayPal Newsroom
Microsoft Security Blog
Microsoft Security Blog

博客园 - sun@live

两段代码 <收藏>提高Web性能的14条法则(详细版) MOSS与业务系统的集成 之 自定义Membership实现Forms方式验证 手机归属地数据—采集 .Net数据源自定义参数 JavaScript和CSS速查手册 序列化一个字符串到CDATA元素(.NET 1.1) Sandcastle工具SandcastleBuilder 清除字符串数组中,重复元素 - sun@live - 博客园 Windows Live Writer 写的一个双向选择器(JS) 论坛中,用户权限解决方法 (原创)一个改自java的代码统计工具 Web2.0用户注册,激活,密码找回模块 [学习日志]EyasBlog控件部分已基本完成-2005-12-03 学习日志(blog日历控件)-2005年11月12日 学习日志(Blog架构)-2005年11月09日 学习日志-2005年11月09日 学习计划-2005年11月07日
MOSS与业务系统的集成 之 单点登录
sun@live · 2008-08-05 · via 博客园 - sun@live

2008-08-05 16:35  sun@live  阅读(572)  评论()    收藏  举报

前面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>