Kerberos аутентифицированное приложение MVC на сайте анонимного доступа - PullRequest
2 голосов
/ 08 марта 2012

Цель

Я пытаюсь развернуть приложение MVC3, для которого требуется проверка подлинности Windows (особенно Kerberos), в качестве приложения на старом веб-сайте анонимной проверки подлинности asp.net.

Симптомы

В IIS 7.5 Express на моей коробке это работает отлично, очевидно.При развертывании его на IIS 7.5 в качестве его собственного сайта у меня возникают проблемы с учетными данными домена, хотя ни один из них не принимается.Когда я развертываю его как приложение, я получаю пользовательскую страницу ошибок с хостинг-сайта.Для подтверждения - Kerbtray не показывает ни одного запроса ни в одном из сценариев.

Подробности

И Сайт, и новые дочерние приложения работают в одном и том же пуле приложений, а пул приложений запускается как AppPoolIdentity.Эта встроенная учетная запись пула приложений IIS (IIS AppPool\MyAppPoolName) имеет полные разрешения на чтение / выполнение для деревьев папок сайта и приложения.Никакое олицетворение не используется.

Вопрос (ы)

  1. Есть ли что-то особенное, что мне нужно сделать, чтобы NTLM и Kerberos работали над приложением внутри анонимного сайта авторизации?

Если нет, то любой совет по поводу того, какие вещи / места следует искать, - файлы ApplicationHost.config и web.config приложения выглядят хорошо.


РЕДАКТИРОВАТЬ: Для пояснения, этоэто все в корпоративной сети, которая широко использует Kerberos для других целей.«Сайт» относится к веб-сайту IIS и отличается от «Приложения», которое должно размещаться на сайте IIS.

1 Ответ

2 голосов
/ 13 марта 2012

Поработав над этим немного больше, я нашел ответ:

  1. Ничего особенного не требуется для размещения приложения IIS с проверкой подлинности Windows (Kerberos) на сайте IIS с проверкой подлинности анонимно на IIS 7.5, если:

    а. Аутентификация в режиме ядра включена - SPN не требуется. б. Приложение использует тот же идентификатор пула приложений, что и родительский узел хостинга. Можно использовать разные пулы приложений и их идентификаторы, но для этого требуются дополнительные разрешения NTFS, и они выходят за рамки данной конкретной проблемы.

Проблема с моей ошибкой была гораздо более простой, но неуловимой ... на родительском сайте был пользовательский набор страниц ошибок, определенных в <HttpErrors>, включая страницы для 401 и 403.

Это была страница с ошибкой, возвращаемая, когда пользователь запросил страницу из вложенного Приложения, потому что Kerberos сначала отправляет 401, чтобы запросить у пользователя учетные данные и попросить его получить и предоставить билет Kerberos ... но потому родительский сайт возвратил ответ 200 (пользовательскую страницу ошибки), когда пользователь так и не получил билет Kerberos.

Когда они отключены, пользователь теперь соответствующим образом получает билет Kerberos и возвращается к NTLM по умолчанию.

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