10

我知道相关的安全风险并已将其与业务联系起来,但他们希望让他们的 5 个域共享登录 cookie。

我们正在使用并且没有计划停止使用 ASP.Net Membership and Profiles。这可能吗?一个黑客甚至会不胜感激。

4

3 回答 3

9

开箱即用的 ASP.NET 是不可能的。

基于表单的身份验证基于 cookie,cookie 只能设置到特定域。

如果您想要真正的跨域(而不是子域)共享身份验证,则需要单点登录解决方案。

我已经推出了自己的,它相对简单。基本原则是您有一个主域来保存您的身份验证 cookie(票证)。然后,您从所有其他域重定向到该域。它不是很漂亮,但是 Microsoft Passport 就是这样工作的。

你可以在网上找到很多例子,看看这两个链接:

身份验证 cookie

跨域认证

于 2009-02-16T20:52:17.940 回答
5

您可以将所有这些域设置为您公司的子域:

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

于 2012-04-20T02:28:18.817 回答
3

不仅使用 ASP.Net 是不可能的,而且根本不可能。Cookie 始终是特定于域的 - 没有任何商业浏览器可以以任何其他方式工作。这是设计使然,对于防止广泛滥用 cookie 非常必要。Muerte 为您指明了正确的方向(单点登录)。

于 2009-02-16T20:56:38.447 回答