Вход в систему привел к сбою для пользователя 'DOMAIN\MACHINENAME$'

Я знаю, что это - почти дубликат: ошибка "Вход в систему привела к сбою для пользователя 'NT AUTHORITY\IUSR'" в ASP.NET и SQL Server 2008 и Вход в систему, отказавший для пользователя 'имя пользователя' - Система. Данные. SqlClient. SqlException с LINQ во внешнем проекте / библиотека классов, но некоторые вещи не складывает по сравнению с другим appliations на моем сервере, и я не уверен почему.

Поля используются:

Веб-поле
Поле SQL
Тестовое поле SQL

Мое приложение:

У меня есть веб-приложение ASP.NET, которое ссылается на библиотеку классов, которая использует LINQ-SQL. Строка подключения, настроенная правильно в библиотеке классов. Согласно Входу в систему, отказавшему для пользователя 'имя пользователя' - Система. Данные. SqlClient. SqlException с LINQ во внешнем проекте / библиотека классов я также добавил эту строку подключения к веб-приложению.

Строка подключения использует учетные данные SQL в качестве так (и в веб-приложении и в библиотеке классов):

 

Это соединение, подтвержденное как работающий через добавление его к Проводнику Сервера. Это - строка подключения, которую использует мой .dbml файл.

Проблема:

Я получаю следующую ошибку:

System.Data.SqlClient.SqlException: Login failed for user 'DOMAIN\MACHINENAME$'.

Теперь ссылаясь на это ошибка "Вход в систему привела к сбою для пользователя 'NT AUTHORITY\IUSR'" в ASP.NET и SQL Server 2008, это говорит, что это - действительно сервис локальной сети, и использующий любое другое недоменное имя не будет работать.

Но я смущен, потому что я установил и Флажок SQL и Тестовое Поле SQL Studio управления SQL, и оба имеют NT AUTHORITY/NETWORK SERVICE под безопасностью-> Логины, на уровне базы данных, который не перечислен под безопасностью-> Пользователи, но в безопасности уровня базы данных-> Пользователи, мне отобразили пользователя в строке подключения.

На уровне NTFS на веб-сервере полномочия имеют СЕТЕВУЮ СЛУЖБУ, имеет полный контроль.

Причина, почему я смущен, состоит в том, потому что у меня есть много других веб-приложений на моем веб-сервере, тот ссылочные базы данных и по Полю SQL и по Тестовому Полю SQL, и они все работают. Но я не могу найти различие между ними и моим текущим приложением, кроме я использую библиотеку классов. Это будет иметь значение? Проверяя полномочия NTFS, установка Логинов безопасности в сервере и уровнях баз данных, строке подключения и методе соединения (учетные данные SQL Server), и пул приложений IIS и другие опции папки, является всей одинаковой.

Почему делают их работа приложений, не добавляя machinename$ к полномочиям ни одного из моих полей SQL? Но именно это одна ссылка говорит мне делать для решения этой проблемы.

115
задан live-love 11 May 2019 в 15:51
поделиться

1 ответ

NETWORK SERVICE и LocalSystem будут аутентифицировать себя всегда как соответствующая учетная запись локально (builtin\network service и builtin\system), но оба будут аутентифицироваться как учетная запись машины удаленно.

Если вы видите ошибку типа Login failed for user 'DOMAIN\MACHINENAME$', это означает, что процесс, запущенный как NETWORK SERVICE или LocalSystem, получил доступ к удаленному ресурсу, аутентифицировался как учетная запись машины и получил отказ в авторизации.

Типичным примером может быть ASP-приложение, запущенное в пуле приложений, настроенном на использование учетных данных NETWORK SERVICE и подключающееся к удаленному SQL Server: пул приложений будет аутентифицироваться как машина, на которой запущен пул приложений, и именно этой учетной записи машины необходимо предоставить доступ.

Если в доступе отказано учетной записи машины, то доступ должен быть предоставлен учетной записи машины. Если сервер отказывается входить в систему 'DOMAIN\MACHINE$', то вы должны предоставить права входа 'DOMAIN\MACHINE$', а не NETWORK SERVICE. Предоставление доступа NETWORK SERVICE позволит подключиться локальному процессу, запущенному как NETWORK SERVICE, а не удаленному, поскольку удаленный процесс будет аутентифицироваться как, как вы догадались, DOMAIN\MACHINE$.

Если вы ожидаете, что asp-приложение подключится к удаленному SQL-серверу как логин SQL, а получаете исключения о DOMAIN\MACHINE$, это означает, что вы используете Integrated Security в строке подключения. Если это неожиданно, значит, вы испортили используемые строки подключения.

150
ответ дан 24 November 2019 в 02:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: