Подтвердить что ты не робот

Интегрированная безопасность 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] Я забыл что-то, что может быть актуальным: я пытаюсь открыть соединение с веб-сервисом, запущенным на моем компьютере.

4b9b3361

Ответ 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" />