Единый вход с проверкой подлинности с помощью форм - PullRequest
7 голосов
/ 16 марта 2010

Я пытаюсь настроить единый вход для 2 веб-сайтов, находящихся на одном домене

например,

http://mydomain (сайт верхнего уровня, содержащий формы authстраница входа)

http://mydomain/admin (отдельно разработанный веб-сайт, размещенный в виртуальном приложении на родительском веб-сайте)

Прочитал несколько статей о едином входе, например,

http://www.codeproject.com/KB/aspnet/SingleSignon.aspx

http://msdn.microsoft.com/en-us/library/dd577079.aspx

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

Я настроил это, и мне никогда не предлагается ввод учетных данных на суб-сайте (виртуальное приложение)

Меня всегда запрашивают на родительском сайте.

В дополнение к тому же механическому ключу я также пытался добавить те же <authentication> и <authorisation> элементы

Есть идеи, что мне не хватает?

Ответы [ 5 ]

1 голос
/ 16 марта 2010

Я использовал <clear/> в разделе httpModules, так как в родительском каталоге были элементы, которых не было в дочернем каталоге (/ admin)

При этом (используя <clear/>, то есть) я случайно очистил модуль FormsAuthentication, указанный в файле web.config в C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ CONFIG

поэтому мне нужно было добавить их явно в дочернюю (/ admin) конфигурацию

1 голос
/ 16 марта 2010

Ваш раздел форм web.config должен быть таким же.

Цитата из - Проверка подлинности с помощью форм в приложениях

Чтобы настроить проверку подлинности на основе форм в приложениях, для атрибутов разделов форм и machineKey файла Web.config установлены одинаковые значения для всех приложений, участвующих в проверке подлинности с помощью общих форм.

Следующий пример показывает Раздел аутентификации Web.config файл. Если не указано иное, имя, защита, путь, ключ проверки, validation, decryptionKey и атрибуты дешифрования должны быть одинаковые для всех приложений. Точно так же шифрование и значения ключа проверки и схема шифрования и проверка схема, используемая для аутентификации билетов (данные cookie) должны быть одинаковыми. Если настройки не совпадают, аутентификация билеты не могут быть разделены.

0 голосов
/ 03 октября 2018

В генерации токенов ASP.NET 4.5 произошли серьезные изменения

Если вы смешиваете приложения ASP.NET 4.5 с приложениями, ориентированными на более ранние версии, вам необходимо убедиться, что совместимые токены используются повсеместно. Добавьте этот атрибут к <machineKey> на любом сайте с таргетингом на .NET 4.5 или более поздней версии:

<system.web>
  <machineKey compatibilityMode="Framework20SP2" /> 
</system.web>

См. этот ответ для более подробной информации. Особая благодарность за этот комментарий , который указал мне правильное направление.

0 голосов
/ 16 марта 2010

Вы должны иметь те же элементы аутентификации в web.config. В элементе содержащихся форм убедитесь, что вы указали каждому приложению одинаковое значение для атрибута name. Для атрибута loginUrl я использую относительный путь и использую одну и ту же страницу входа для всех приложений (например, loginUrl = "/ MainApp / login.aspx").

Кроме того, вы создаете билет аутентификации вручную?

0 голосов
/ 16 марта 2010

Попробуйте настроить раздел httpCookies в файле web.config обоих приложений для использования одного домена. Таким образом, когда вы входите в одно приложение, полученный вами файл cookie FormsAuthentication будет виден другому приложению.

...