Почему моя проверка подлинности Windows MVC3 Intranet не работает при публикации - PullRequest
6 голосов
/ 02 февраля 2012

У нас есть простой интранет-сайт в MVC3 и структурах сущностей. Все отлично работает для запуска в отладке из Visual Studio. Когда я публикую сайт на своем локальном веб-сервере IIS7.5 или на устройстве dev в том же домене, мне будет предложено ввести имя пользователя и пароль, и он не будет подключаться к сайту. Он просто возвращает ошибку 401.1 и с любопытством показывает

Logon Method Not yet determined 
Logon User Not yet determined 

Я убедился, что аутентификация Windows включена и анонимная аутентификация отключена. приложение использует applicationPoolIdentity, но я попробовал его с сетевыми службами без разницы. Webconfig включает в себя

<authentication mode="Windows" />

и я пробовал с разделом авторизации и без него.

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

Единственное, что я обнаружил в Интернете, это изменение записи реестра, но в конечном итоге это произойдет на рабочем сервере, поэтому мне неудобно вносить изменения в реестр только для этого.

локально запущенный с этим блоком кода возвращает всю ожидаемую информацию

<div id="title">
    <h4> Environment.UserName: @Environment.UserName  
    @DateTime.Now.Millisecond.ToString() </h4>
    @foreach (var role in Roles.GetRolesForUser())
    {
        role.ToString(); <br />
    }
</div>
<div id="logindisplay">
    Context.User.Identity.Name <strong>@Context.User.Identity.Name</strong>!<br />
    @Environment.UserDomainName
</div>

Это веб-приложение MVC3. Переключатели аутентификации IIS

Anonymous Authentication     Disabled
ASP.NET Impersonation        Disabled
Forms Authentication         Disabled
Windows Authentication       Enabled

Какие-нибудь другие идеи или вещи, которые мне не хватает?

Ответы [ 4 ]

3 голосов
/ 09 февраля 2012

В этой статье на MSDN показано, как настроить веб-сайт IIS 7 MVC3 Intranet: http://msdn.microsoft.com/en-us/library/gg703322(VS.98).aspx

Интересная часть, касающаяся вас, скорее всего, является последним разделом подражания. Если вы запускаете свой сайт с использованием аутентификации Windows, но отключаете олицетворение, вы будете читать / выполнять файлы для веб-сайта с использованием аутентифицированного удостоверения. Это означает, что каждый пользователь, который хочет получить доступ к сайту, должен иметь права доступа к папке / файлу.

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

2 голосов
/ 07 февраля 2012

Кажется, что у вас работает проверка подлинности Windows, так как при открытии страницы у вас запрашивают учетные данные ... вы должны поместить свои учетные данные туда, и это приведет вас на вашу веб-страницу ... или проблема в том, что выне удается открыть страницу после ввода правильных учетных данных?

Сначала я бы изменил режим пула приложений с Классический на Интегрированный (или наоборот).

Затем выглядиткак то, что ваши машины находятся в каком-то домене?В этом случае проверьте, правильно ли вы вводите учетные данные.Вы должны поставить <domain>\<your_username> в качестве имени пользователя.Кроме того, если это не сработает, попробуйте добавить и удалить компьютер из домена и повторите попытку.Может быть больше идей, дайте мне знать, как это происходит и, если возможно, каков вывод команды nltest.exe /SC_QUERY:domain_name?

1 голос
/ 07 июля 2015

У меня такая же проблема.При создании нового приложения на веб-сайтах по умолчанию все работает нормально.Но когда я создаю новый веб-сайт и помещаю туда файлы, я не могу заставить его работать.Я продолжаю получать приглашение к входу.Я использую тот же пул приложений для моего нового сайта и настроил права доступа к каталогу, чтобы разрешить полный доступ к iis_isuser и другим, так как это компьютер разработчика.

1 голос
/ 02 февраля 2012

Вам необходимо настроить это в IIS для использования аутентификации Windows.

  1. Откройте IIS Manager
  2. Перейдите туда, где находится ваше приложение в IIS
  3. В Просмотр содержимого двойной щелчок Аутентификация
  4. Включить Аутентификация Windows и отключить Анонимная аутентификация

Если вы делаете это только в AppPool, настройки приложения переопределят это.

Когда вы говорите:

Я убедился, что аутентификация Windows включена и анонимная аутентификация отключена.

Где именно вы это установили? Не уверен, какую операционную систему вы используете на компьютере, на котором вам предлагают, но некоторые версии Windows не поддерживают аутентификацию Windows (то есть Windows 7 Home не поддерживает).

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