Проверка подлинности IIS и SQL Server Windows в ASP.NET приложение

#asp.net #iis #active-directory #windows-authentication

#asp.net #iis #active-directory #windows-проверка подлинности

Вопрос:

Я настроил 3 виртуальные машины:

  • (A) Active Directory в Windows 2008 R2.
  • (B) Microsoft SQL Server 2008 Express в Windows XP с пакетом обновления 3.
  • (C) IIS в Windows XP с пакетом обновления 3.

И SQL Server, и IIS объединены в Домене, но хост-КОМПЬЮТЕР — нет. Я также создал пользователя-администратора домена с правами администратора на сервере SQL. Я могу пинговать / получать доступ ко всем виртуальным машинам друг от друга и с компьютера, на котором размещены виртуальные машины. Я могу подключиться к виртуальной машине SQL Server с помощью проверки подлинности Windows в SQL Server Management Studio внутри виртуальной машины IIS без проблем.

Я создал очень простое приложение на ASP.Сетевое приложение, размещенное на виртуальной машине IIS, которое открывает подключение к базе данных на виртуальной машине SQL Server. Я настроил веб-сайт на проверку подлинности только с помощью Windows Authentication. Вот моя строка подключения:

 Server=DATABASE;Database=HAP;Trusted_Connection=True;
  

Вот код:

 SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);

using(connection) {
    connection.Open();
}
  

Я также установил «Доверять этому компьютеру для делегирования любой службе (только Kerberos)» в AD для виртуальной машины IIS.

Он выдает «Ошибка входа в систему. Вход осуществляется из ненадежного домена и не может использоваться с проверкой подлинности Windows.» исключение. Если я изменю строку подключения на эту:

 Server=DATABASE;Database=HAP;User ID=sa;Password=connectsql;
  

приложение работает нормально.

Мне действительно нужно это для проверки подлинности с помощью проверки подлинности Windows, а не с помощью проверки подлинности SQL Server.

Примечание: IIS запрашивает у пользователя его учетные данные Windows.

Ответ №1:

Мне неясно, собираетесь ли вы, чтобы приложение аутентифицировалось как пользователь, вошедший в систему, или вы просто хотите иметь asp.net рабочий процесс должен быть аутентифицирован через AD.

Если вы хотите, чтобы пользователь аутентифицировался с помощью своей учетной записи, тогда вам нужно установить «imperasonate= true» в веб-конфигурации. Это повлияет на производительность, но это может быть нормально.

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

Комментарии:

1. Я хочу, чтобы пользователь аутентифицировался с помощью своей учетной записи. Я попытался установить <identity impersonate=»true» />, но выдается другое исключение: ошибка входа для пользователя ‘NT AUTHORITY ANONYMOUS’. Что еще я упускаю?

2. @acemate433s — У вас включен анонимный вход. В диспетчере IIS щелкните правой кнопкой мыши на сайте (или имени приложения) и перейдите на вкладку Безопасность каталога, затем выберите Редактировать в элементе управления анонимным доступом и пользовательской идентификацией. Снимите флажок Анонимный доступ и нажмите «Базовая проверка подлинности», затем убедитесь, что домен по умолчанию используется по умолчанию (или введите свое полное доменное имя). Также необходимо убедиться, что пользователи являются членами группы, которая имеет права доступа к файлам на сайте, и у пользователей должно быть разрешение «войти локально» на сервере IIS. Наконец, при использовании XP существует ограничение на одновременное использование 10 пользователей

3. Это сработало! Однако я хочу использовать проверку подлинности Windows в IIS вместо базовой проверки подлинности. Какие настройки я должен изменить?

4. Вы используете проверку подлинности Windows. То, что вы видите там, является «встроенной» проверкой подлинности, и это работает только в интрасети, где клиенты подключены к домену (что, как вы сказали, не так).