Entity Framework Core и Windows аутентификация на сервере IIS - PullRequest
1 голос
/ 21 апреля 2020

Я впервые пытаюсь использовать аутентификацию Windows на моем ASP. NET Core 3.1 MVC сайте для подключения к SQL Серверу с использованием EF Core.

Локально все в порядке (с использованием IIS Express), но на сервере что-то идет не так.

Мой сайт имеет "hi,<myDomain/myAccount>!" в правом верхнем углу страницы, и это правильно, но когда я запросить страницу с запросом к базе данных, я получаю эту ошибку:

SqlException: сбой входа для пользователя 'MyDomain \ MyServerName $'

Почему? Как настроить строку подключения EF Core?

Обновление:

  • Я не могу использовать аутентификацию формы
  • У меня нет таблицы списка пользователей
  • Я могу использовать олицетворение (WinAuth? Active dir?)
  • Каждый пользователь (больше может войти на сайт имеет доступ к базе данных sql
  • Я могу изменить некоторые IIS Server settings
  • Впервые я использую winAuth (автоматически настраивается с помощью инструмента создания проекта visual studio => с windows аутентификацией)
  • ", под каким пользователем работает пул приложений, работающий в «Я не знаю, по умолчанию я думаю

1 Ответ

1 голос
/ 21 апреля 2020

Это, вероятно, проблема, связанная с учетными данными, выполняющими пул приложений в IIS, и правами доступа, которыми обладают эти конкретные учетные данные. Вы говорите, что НЕ используете олицетворение, и в этом случае запрос к SQL Серверу из вашего приложения, работающего на IIS, должен быть выполнен с использованием системной учетной записи, имеющей надлежащий доступ к базе данных. Системная учетная запись, представляющая собой одноэлементную учетную запись, которая существует только для запуска в качестве «удостоверения пула приложений» для приложения в IIS.

В IIS на вашем сервере, под каким пользователем работает пул приложений? В большинстве случаев с аутентификацией Windows вы хотите, чтобы какая-то системная учетная запись запускала пул приложений, а затем предоставляла этой системной учетной записи доступ к базе данных. Если вы не хотите использовать системную учетную запись, вам придется использовать олицетворение, а затем использовать группу AD, чтобы предоставить олицетворенным пользователям доступ к SQL базе данных сервера.

Поскольку вы говорите запрос к SQL серверу выглядит как DOMAIN \ SERVERNAME, вам, вероятно, нужно изменить этот параметр в IIS, чтобы настроить запрос на получение от системной учетной записи, а затем дать этой системной учетной записи явный доступ к базе данных SQL Server. .

Вы можете изменить это, настроив дополнительные параметры в IIS и введя информацию (имя пользователя / пароль) учетной записи, под которой вы хотите запустить приложение, или «как» в IIS.

enter image description here

enter image description here

Затем добавьте эту же учетную запись DOMAIN \ USERNAME в базу данных как пользователь, который может читать / писать / Удалить et c. Вы также можете просто добавить DOMAIN \ SERVERNAME, который отклоняется в запросе, в базу данных здесь, если вы не хотите использовать пользовательскую системную учетную запись.

enter image description here

Что касается «Как настроить строку подключения EFCore?», Это обычно делается в файле Startup.cs. Там вы можете ввести строку подключения напрямую с помощью метода .UseSqlServer (connectionstring). После того, как вы настроили его, вам не нужно настраивать его снова (если, возможно, не измениться на dev / qa / prod).

enter image description here

enter image description here

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