Подключите к домену SQL Server 2005 от недоменной машины

Я задал вопрос несколько дней назад (Доступ к SQL Server 2005 от недоменной машины с помощью аутентификации Windows), который получил некоторых интересных, но не применимые предложения. Я хотел бы задать вопрос снова, но ясно дать понять, каковы мои ограничения:

У меня есть домен Windows, в котором машина выполняет SQL Server 2005 и который настроен для поддержки только аутентификации Windows. Я хотел бы выполнить клиентское приложение C# на машине в той же сети, но который НЕ находится на домене, и получите доступ к базе данных по экземпляру SQL Server 2005 года.

Я не МОГУ создать или изменить ОС или пользователей SQL Server или на машине, и я не МОГУ внести изменения в полномочия или олицетворение, и я не МОГУ использовать руны.

Я знаю, что могу записать Perl и JAVA-приложения, которые могут соединиться с базой данных SQL Server с помощью только эти четыре параметра: имя сервера, имя базы данных, имя пользователя (в форме domain\user), и пароль.

В C# я попробовал различные вещи вокруг:

string connectionString = "Data Source=server;Initial Catalog=database;User Id=domain\user;Password=password";
SqlConnection connection = new SqlConnection(connectionString);
connection.Open();

и попробованная интегрированная защита установки к истине и лжи, но ничто, кажется, не работает. То, что я пытаюсь сделать просто невозможный в C#?

Спасибо за любую справку, Martin

8
задан Community 23 May 2017 в 12:08
поделиться

6 ответов

Как вы правильно сказали, JDBC или Perl на машине Linux могут подключаться к SQL Server с использованием аутентификации Windows и учетных данных, которые отличаются от данных текущего пользователя, вошедшего в систему. То же самое, кстати, справедливо и для устройств Windows CE .

Я думаю, что проблема заключается не в C #, а в драйвере OLE DB для SQL Server. Я предполагаю, что упомянутые выше методы «притворяются машиной Windows, используя определенные учетные данные» на сетевом уровне; функция, которой нет в драйвере OLE DB для SQL Server. Таким образом, я предлагаю поискать альтернативный (возможно, коммерческий?) Драйвер OLE DB, который может обращаться к базам данных SQL Server. Однако я не уверен, существует ли такая вещь.

2
ответ дан 5 December 2019 в 10:39
поделиться

Бесполезно указывать имя пользователя и пароль в строке подключения, потому что они подразумевают аутентификацию SQL, а вы уже указали, что SQL Server принимает только аутентификацию Windows.

Если сервер не разрешает аутентификацию SQL, тогда единственная возможность подключения - использовать аутентификацию Windows, т.е. IntegratedSecurity = true . Это означает, что ваш клиент будет аутентифицироваться как те учетные данные, которые запускают процесс (или в настоящее время олицетворяются).

Чтобы проверка подлинности Windows работала, вы должны выбрать один из следующих вариантов:

  • Присоедините машину, не присоединенную к домену, в домен (это может быть собственный домен!), Который доверяет домену сервера, затем запустить клиентский процесс как учетные данные домена \ пользователя.
  • Используйте зеркальные учетные записи NTLM: пара локальных пользователей на клиенте и сервере с одинаковыми именами и паролями.
  • Предоставить АНОНИМНЫЙ доступ к SQL Server.

Если вы не можете заставить клиентский хост доверять домену сервера, а также не можете добавить зеркальные учетные записи NTLM, а администратор SQL Server достаточно здравомыслящий, чтобы не включать ANONYMOUS, вы не сможете подключиться.

4
ответ дан 5 December 2019 в 10:39
поделиться

Вот пример кода, который я использую для подключения с компьютера без домена с помощью драйвера JDBC jTDS:

Class.forName ("net.sourceforge.jtds.jdbc .Driver "). NewInstance (); String url =" jdbc: jtds: sqlserver: // server / database; domain = domain "; conn = DriverManager.getConnection (url," user "," пароль ");

0
ответ дан 5 December 2019 в 10:39
поделиться

Вы должны настроить SQL Server , чтобы разрешить аутентификацию SQL Server, то есть аутентификацию с использованием имени пользователя и пароля.

Вы не можете аутентифицироваться по имени пользователя / паролю домена, подобным аутентификации сервера, т.е. указать имя пользователя / пароль домена напрямую.

Я, конечно, могу ошибаться, но уверен, что это не проблема C # или .NET. Как вы можете войти в систему на SQL Server в своем приложении Perl или Java?

2
ответ дан 5 December 2019 в 10:39
поделиться
0
ответ дан 5 December 2019 в 10:39
поделиться

Я дам вам ответ на Java, с которым я более знаком: Я использую драйвер jTDS JDBC с четырьмя параметрами, упомянутыми выше. О приложении Perl я знаю меньше, но оно работает на Linux, и может подключаться с теми же параметрами. Я не могу изменить SQL Server для поддержки аутентификации SQL.

Чтобы ответить на предложения Ремуса, я не могу сделать ни одну из этих трех вещей, которые он предлагает, и все же приложения Java и Perl могут подключаться. Есть другие идеи?

Спасибо, Мартин

0
ответ дан 5 December 2019 в 10:39
поделиться
Другие вопросы по тегам:

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