Печенье с перекрестными доменами с поддержкой форм

Я знаю, что связанный с безопасностью риск связан с бизнесом, но они хотят иметь свои 5 доменов для совместного использования файлов cookie для входа.

Мы используем и не планируем прекращать использование членства и профилей ASP.Net. Это возможно? Взлом будет даже оценен.

Ответ 1

Это невозможно из-за рамки ASP.NET.

Проверка подлинности на основе форм основана на файле cookie, и файлы cookie могут быть установлены только в определенном домене.

Если вы хотите, чтобы подлинная перекрестная доменная (не поддомены) общая аутентификация, вам нужно решение Single Sign On.

Я свернул свой собственный, и это относительно просто. Основной принцип заключается в том, что у вас есть основной домен, который содержит ваш файл cookie для проверки подлинности (билет). Затем вы перенаправляете на этот домен из всех других доменов. Это не очень красиво, но мероприятие Microsoft Passport работало именно так.

Вы можете найти множество примеров в сети, взгляните на эти две ссылки:

Файлы cookie для проверки подлинности

Проверка подлинности через домен

Ответ 2

Вы можете настроить все эти домены как поддомены для вашей компании:

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

С уважением, Макс Чернышов http://prontocoder.com

Ответ 3

Не только с ASP.Net это невозможно, но совсем нет. Куки файлы всегда зависят от домена - никакой коммерческий браузер не будет работать каким-либо другим способом. Это по дизайну и очень необходимо для предотвращения широко распространенного злоупотребления печеньем. Muerte указал вам в правильном направлении (один вход).