您的位置:首页 > 其它

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

2008-08-05 16:35 411 查看
前面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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: