Кросс-доменные куки с FormsAuthentication - PullRequest
10 голосов
/ 16 февраля 2009

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

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

Ответы [ 3 ]

9 голосов
/ 16 февраля 2009

Это невозможно с готовым ASP.NET.

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

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

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

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

Файлы cookie для аутентификации

Междоменная аутентификация

4 голосов
/ 20 апреля 2012

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

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

2 голосов
/ 16 февраля 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...