2015-08-30 1 views
0

У меня есть два участка: www.forums.mysite.com и www.mysite.comАутентификация пользователя в поддомене и его вход в родительский домен?

форумах уже установлена ​​проверка подлинности, и я хотел бы использовать его.

Я использую C# MVC .NET 4.5

я создал два сайта в IIS 8.5: MySITE и форумы

MySITE привязок:

  • Тип: HTTP
  • IP адрес: Все Unnasigned
  • Порт: 80
  • Имя хоста: www.mysite.com

форумы привязок:

  • Тип: HTTP
  • IP адрес: Все Unnasigned
  • Порт: 80
  • Имя хоста: WWW .forums.mysite.com

Я также добавил е домены в мой файл хозяина:

  • MyIP www.mysite.com
  • MyIP www.forums.mysite.com

Я добавил MachineKey в обоих приложениях файлы Web.config и ключи идентичны:

<machineKey validationKey="C50B3C89CB21F4F1422FF158A5B42D0E8DB8CB5CDA1742572A487D9401E3400267682B202B746511891C1BAF47F8D25C07F6C39A104696DB51F17C529AD3CABE" decryptionKey="8A9BE8FD67AF6979E7D20198CFEA50DD3D3799C77AF2B72F" validation="SHA1" /> 

В контроллере субдомена (Форум), пользователь входит в систему, и я изменил куки следующим образом:

FormsAuthentication.SetAuthCookie(username, model.RememberMe); 
var cookie = FormsAuthentication.GetAuthCookie(username, model.RememberMe); 
cookie.Domain = "mysite.com"; //this is the parent domain 
//I've also tried with .mysite.com 
Response.AppendCookie(cookie); 

Я могу войти через форум, но потом, когда я иду на основной сайт (mysite.com), я не вошли в систему ... Я не понимаю, почему нет.

В качестве теста в mysite.com/home/index.cshtml (домашняя страница), я добавил это:

<h1> 
    Logged in: @User.Identity.IsAuthenticated 
</h1> 

но результат всегда ложно, даже если оба сайта имеют то же самое. ASPXAUTH cookie ...

Любые идеи?

ответ

0

Возможно, домен .mysite.com (ведущая точка), а не mysite.com.

Обновление.

Кроме того, проблема может быть связана с ведущими www в ваших доменных именах. Попробуйте набор домен печенья в www.mysite.com или .www.mysite.com (или исключить www в вашей конфигурации,-х его просто архаичный вредный :))

UPD. 2

Похоже, что существуют проблемы с настройкой файлов cookie для родительских доменов (см., Например, this), что является понятным с некоторой точки зрения.

Можно только предположить следующее:

  1. На пользовательском входе в подобласти, возьмите AUTH данные.
  2. Сериализуйте данные аутентификации и отправьте их в родительский домен на какой-то скрипт, например www.mysite.com/keep-logined?c=<encoded_auth_data>.
  3. В этом keep-logined скрипт несертифицирует данные аутентификации и вручную устанавливает cookie для корневого домена.
  4. Перенаправление пользователя обратно в подобласть (может поставить keep-logined скрипт с redirect-back URL

. Примечание: убедитесь, что для защиты этого keep-logined сценария и представил данные аутентификации от взлома какого-то кодирования или ключа обхода.

+0

Я попытался, что тоже не повезло,.. ( – pookie

+0

@pookie, см обновить – ankhzet

+0

просто попытался это, но до сих пор не работает Удален куки, чтобы быть безопасным, слишком – pookie