Получение аутентифицированного имени пользователя на поддомене - PullRequest
1 голос
/ 22 марта 2011

У меня есть настройка проверки подлинности с помощью форм для приложения ASP.NET 4.0 на http://example.com - мы назовем его MainApp. У меня также есть приложение ASP.NET 4.0, работающее на http://static.example.com, которое (назовем его SubApp) не имеет доступа к основному приложению.

Теперь SubApp необходимо выяснить имена пользователей, которые сначала вошли в MainApp, а затем вошли в SubApp. Я подумал, что этим двум приложениям достаточно иметь одинаковые машинные ключи, а SubApp - указать в web.config, чтобы он мог прочитать файл cookie аутентификации MainApp и получить из него имя пользователя.

Я провел простой тест, и когда я пытаюсь попасть на какую-то страницу в SubApp, она продолжает перенаправлять на http://static.example.com/login.aspx - который даже не существует, не указан в web.config. Очевидно, мой подход не работает, хотя я не понимаю, почему - cookie основного домена должен быть доступен на поддомене, верно?

Вот как я настраиваю аутентификацию в SubApp:

<authentication mode="Forms">
    <forms domain="example.com"/>
</authentication>

<authorization>
    <allow users="*"/>
</authorization>

Ответы [ 2 ]

3 голосов
/ 22 марта 2011

Вы можете попробовать установить свойство domain тега <forms> в web.config для обоих приложений:

<authentication mode="Forms">
  <forms 
      loginUrl="~/Account/LogOn" 
      timeout="2880" 
      domain="example.com"
  />
</authentication>

Это эффективно установит действительность файла cookie аутентификации для example.com и static.example.com, что означает, что пользователь, прошедший аутентификацию в первом домене, будет автоматически аутентифицирован во втором.

0 голосов
/ 12 ноября 2013

Дарин великолепен.

У меня есть основной домен, вызывающий поддомен (с window.open ...) с аутентификацией форм на обоих ... будет работать на моей машине dev и chrome в облаке, но не IE10 в облаке.

По сути, они оба используют одну и ту же базу данных, поэтому передали guid, который был сохранен в базе данных главным доменом, на поддомен. Затем это было проверено из строки запроса и идентификатор, установленный с помощью FormsAuthentication.SetAuthCookie (MyUserID.ToString)

I - попытался обновить исправление на сервере (спасибо - добавлен файл браузера - установить cookieless = "UseCookies" в web.config

но только когда я установил свойство домена в корневой домен, оно работало в IE10 ... 4 дня исследований для одной небольшой проблемы.

Да !!!!!

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