我知道相关的安全风险并已将其与业务联系起来,但他们希望让他们的 5 个域共享登录 cookie。
我们正在使用并且没有计划停止使用 ASP.Net Membership and Profiles。这可能吗?一个黑客甚至会不胜感激。
我知道相关的安全风险并已将其与业务联系起来,但他们希望让他们的 5 个域共享登录 cookie。
我们正在使用并且没有计划停止使用 ASP.Net Membership and Profiles。这可能吗?一个黑客甚至会不胜感激。
开箱即用的 ASP.NET 是不可能的。
基于表单的身份验证基于 cookie,cookie 只能设置到特定域。
如果您想要真正的跨域(而不是子域)共享身份验证,则需要单点登录解决方案。
我已经推出了自己的,它相对简单。基本原则是您有一个主域来保存您的身份验证 cookie(票证)。然后,您从所有其他域重定向到该域。它不是很漂亮,但是 Microsoft Passport 就是这样工作的。
你可以在网上找到很多例子,看看这两个链接:
您可以将所有这些域设置为您公司的子域:
www.company.com
shop.company.com
sales.company.com
research.company.com
..
然后您将能够将 cookie 设置为父域,并且它将对所有子域可见。
var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encTicket);
cookie.Domain = ".company.com";
Repsonse.Cookies.Add(cookie);
问候, Max Chernyshov http://prontocoder.com
不仅使用 ASP.Net 是不可能的,而且根本不可能。Cookie 始终是特定于域的 - 没有任何商业浏览器可以以任何其他方式工作。这是设计使然,对于防止广泛滥用 cookie 非常必要。Muerte 为您指明了正确的方向(单点登录)。