在一个Web服务器上进行身份验证的表单,也希望在另一个Web服务器上进行身份验证

时间:2012-06-05 03:19:14

标签: asp.net forms-authentication

我们在我们的域www.ourbusiness.com上使用表单身份验证(IIS 7和ASP.Net 3.5)并且没有任何问题。我们现在希望添加一些额外的ASP.Net服务器,这些服务器将位于稍微不同的域 - newapp.ourbusiness.com - 并且希望在www.ourbusiness.com上经过身份验证的人员将通过身份验证在newapp.ourbusiness.com。

我看到有关如何解决这个问题的分散报道,但有人可以提供额外的指导吗?例如,我的理解是,我们希望所有服务器都使用相同的机器密钥,以便一个盒子上的身份验证cookie适用于所有其他服务器,这是我们已经在www.ourbusiness.com域上执行的操作。但我不确定还需要什么,或者是否有文章解释所涉及的步骤。感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您可以自己创建FormsAuthenticationTicketHttpCookie。这样,您可以设置cookie的域来处理您的子域。就像你说的那样,你的服务器也必须拥有相同的机器密钥。

 FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1,
        username,
        DateTime.Now,
        DateTime.Now.AddMinutes(30),
        isPersistent,
        userData,
        FormsAuthentication.FormsCookiePath);

      // Encrypt the ticket.
      string encTicket = FormsAuthentication.Encrypt(ticket);

      // Create the cookie.
      var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encTicket) 
      cookie.Domain = ".ourbusiness.com";
      Response.Cookies.Add(cookie);