10

我知道相关的安全风险并将它与业务联系起来,但他们希望有5个域共享登录cookie。使用FormsAuthentication交叉域名Cookie

我们正在使用并没有计划停止使用ASP.Net成员资格和配置文件。这可能吗?黑客甚至将不胜感激。

回答

9

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

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

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

我已经推出了自己的,它相对简单。基本原则是您拥有一个拥有认证cookie(票证)的主域。然后,您将从所有其他域重定向到该域。这不太好,但事件微软护照工作的方式。

你可以找到很多的在网上的例子,来看看这两个环节:

Authentication cookies

Cross domain authentication

+0

在那第二个链接,如果您有运行演示,因为“键不适于在指定状态下使用”的麻烦,试试这个:确保密钥文件实际上是在你认为的地方创建的。看起来示例代码包含一个密钥文件,但是我们当然想要创建自己的密钥文件。为了保存密钥文件(tripleDES.key),我首先必须将配置保存在企业库配置工具中(右键单击,保存)。一旦我保存了配置,我的密钥文件也会立即保存,并且我可以运行演示应用程序。 – northben 2013-04-15 17:02:34

2

不仅与ASP.Net这是不可能的,但不在所有。 Cookie始终是特定于域的 - 任何商业浏览器都不能以其他方式工作。这是设计和非常必要的,以防止广泛滥用Cookie。 Muerte指出你正确的方向(单点登录)。

4

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

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); 

问候, 最大Chernyshov http://prontocoder.com