У меня есть два сайта MVC3, оба размещены на одном сервере, который я настроил на использование одинаковых файлов cookie аутентификации.
Первый сайт - это сайт интрасети, использующий проверку подлинности Windows. У этого сайта есть одно простое действие, которое проверяет, прошел ли пользователь аутентификацию, если он был, он создает cookie-файл FormsAuthentication, который он добавляет к ответу. Этот файл cookie создан для обычного пользователя, который я определяю по группам AD пользователя. Затем ответ перенаправляет пользователя на второй сайт, который использует проверку подлинности с помощью форм.
Когда я запускаю это на своей локальной машине, все работает, как описано выше. Когда я развертываю это на нашем локальном веб-сервере, это не так. Я проверил, правильно ли определена группа пользователей и создает ли он допустимого пользователя для файла cookie, и я убедился, что это правильно на веб-сервере.
Вот как я делаю все вышеперечисленное:
Во-первых, я заставил оба сайта использовать один и тот же ключ компьютера для шифрования и дешифрования.
Когда я создаю файл cookie на Сайте 1, я гарантирую, что он имеет то же имя и Домен, что и файлы cookie, созданные на Сайте 2.
var cookie = FormsAuthentication.GetAuthCookie(userName, false);
cookie.Domain = FormsAuthentication.CookieDomain; //This is the Domain of my 2nd site as they are different
HttpContext.Response.Cookies.Add(cookie); //Add my cookie to the response
HttpContext.Response.RedirectPermanent(urlForSite2);
Опять же, когда я запускаю это на моей локальной машине, это работает без проблем. Но при развертывании он либо не передает cookie в запросе, либо ответ игнорирует его, но я не уверен, как проверить ни один из этих случаев.
Не стесняйтесь задавать любые вопросы, касающиеся более подробной информации о том, как я это делаю, если это поможет получить нужный мне ответ.