Интегрированная безопасность SQL с использованием имени компьютера вместо имени пользователя
Я пытаюсь выполнить экземпляр SQL Express в той же сети, аутентифицируя пользователя моего домена. Он отлично работает с Windows Authentication в SSMS. Я проверил, что могу использовать базу данных MyDB, включая редактирование таблиц.
Однако, когда я пытаюсь использовать следующую строку подключения:
Server=ipaddress\SQLExpress; Database=MyDB; Integrated Security=SSPI;
Я возвращаю ошибку:
Cannot open database "MyDB" requested by the login. The login failed.
Login failed for user 'ROMANIA\MONSTER2$'
Проблема в том, что MONSTER2 - это имя моего компьютера, а не мое имя пользователя. (РУМЫНИЯ - это домен.) Что я делаю неправильно?
[Edit] Я забыл что-то, что может быть актуальным: я пытаюсь открыть соединение с веб-сервисом, запущенным на моем компьютере.
Ответы
Ответ 1
Ваш веб-сервис работает в контексте безопасности NT AUTHORITY\Network Service
. Это приведет к тому, что процесс использует учетную запись хост-компьютера при доступе к сетевым ресурсам в домене.
Вам нужно настроить веб-службу для работы с идентификатором вашего домена.
Если вы размещаете свой веб-сервис в IIS, вы можете сделать это через олицетворение. Вот пример:
<configuration>
<system.web>
<identity
impersonate="true"
userName="ROMANIA\username"
password="********" />
</system.web>
</configuration>
Ответ 2
Это связано с тем, что ваш веб-сервер не настроен на использование личности человека, использующего эту службу, а скорее на том, на каком компьютере он работает.
Проверьте, содержит ли ваш web.config веб-сервис: <authentication mode="Windows" />
Ответ 3
Мне нужно было сделать оба в моей ситуации:
<authentication mode="Windows" />
<authorization>
<deny users="?" />
</authorization>
<identity impersonate="true" />