Вопрос или проблема
У меня есть веб-приложение MVC на Windows Server 2019 с SQL Server 2017.
Когда я читаю/пишу в базу данных, если я добавляю учетные данные в строку подключения или удаляю учетные данные, база данных может быть доступна для чтения/записи.
Я создал пользователя в группе IUSR, с учетными данными, и создал новый пул приложений, но проблема не решена.
Кто-нибудь может помочь мне?
Если вы используете интегрированную аутентификацию, установите ‘Integrated Security=true;’ в строке подключения вместо указания учетных данных.
Если вы используете аутентификацию на основе форм и запрашиваете у пользователя учетные данные, вам нужно будет установить соединение в коде, передав учетные данные, которые, вероятно, будут указаны в строке подключения в какой-то момент при подключении к базе данных. Как это сделать, зависит от ORM-фреймворка или от того, как вы устанавливаете SQL-соединение.
Ответ или решение
Для решения проблемы передачи учетных данных пользователя из IIS 10 в SQL Server в контексте вашего приложения MVC на Windows Server 2019 с SQL Server 2017, необходимо учесть несколько ключевых моментов.
1. Использование интегрированной аутентификации
Если ваша цель — использовать интегрированную аутентификацию Windows, вам необходимо указать Integrated Security=true;
в строке подключения к базе данных. Это позволяет вашей веб-приложению использовать учетные данные под учетной записи, под которой работает приложение. Убедитесь, что:
- Учетная запись приложения (обычно это идентификатор пулла приложений) имеет достаточные права доступа к базе данных SQL Server.
- Ваша SQL Server настроена для разрешения входа для доменных учетных записей.
Пример строки подключения с интегрированной аутентификацией:
"Server=название_сервера;Database=имя_базы_данных;Integrated Security=true;"
2. Настройка пула приложений
Если вы создаете новый пул приложений:
- Убедитесь, что он работает от учетной записи, имеющей доступ к вашему SQL Server.
- Настройте пул приложений так, чтобы он использовал подходящую версию .NET Framework для вашего MVC-приложения.
3. Если требуется аутентификация на основе форм
Если вы используете аутентификацию на основе форм и хотите передать учетные данные пользователей в SQL Server, вы можете создать соединение в коде, передав учетные данные пользователя. Логика будет зависеть от используемого фреймворка ORM (например, Entity Framework).
Пример использования строка подключения с явными учетными данными:
string connectionString = $"Server=название_сервера;Database=имя_базы_данных;User Id=имя_пользователя;Password=пароль;";
4. Права доступа на уровне SQL Server
Убедитесь, что учетная запись, под которой ваше веб-приложение работает, имеет необходимые разрешения на SQL Server:
- Проверьте, есть ли у пользователя или группы, к которой он принадлежит, права на чтение и запись в соответствующей базе данных.
- Используйте SQL Server Management Studio (SSMS) для предоставления необходимых прав.
5. Проверка соединения
После внесения всех изменений убедитесь, что ваше приложение может корректно устанавливать соединение с базой данных. Для диагностики используйте:
- Журнал ошибок SQL Server.
- Логи вашего веб-приложения.
Заключение
С правильной настройкой интегрированной аутентификации или аутентификации на основе форм ваш MVC-приложение должно быть в состоянии корректно передавать учетные данные пользователя SQL Server. Не забывайте всегда проверять права доступа и настройки безопасности для защиты вашего приложения и баз данных.