我们在我们的域www.ourbusiness.com
上使用表单身份验证(IIS 7和ASP.Net 3.5)并且没有任何问题。我们现在希望添加一些额外的ASP.Net服务器,这些服务器将位于稍微不同的域 - newapp.ourbusiness.com
- 并且希望在www.ourbusiness.com上经过身份验证的人员将通过身份验证在newapp.ourbusiness.com。
我看到有关如何解决这个问题的分散报道,但有人可以提供额外的指导吗?例如,我的理解是,我们希望所有服务器都使用相同的机器密钥,以便一个盒子上的身份验证cookie适用于所有其他服务器,这是我们已经在www.ourbusiness.com
域上执行的操作。但我不确定还需要什么,或者是否有文章解释所涉及的步骤。感谢您的帮助。
答案 0 :(得分:1)
您可以自己创建FormsAuthenticationTicket
和HttpCookie
。这样,您可以设置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);