Могу ли я подключиться к SQL Server с помощью аутентификации Windows из веб-приложения Java EE? - PullRequest
53 голосов
/ 03 октября 2008

В настоящее время я изучаю, как установить соединение с базой данных SQL Server из моего веб-приложения Java EE, используя аутентификацию Windows вместо аутентификации SQL Server. Я запускаю это приложение с Tomcat 6.0 и использую драйвер Microsoft JDBC. Мой файл свойств подключения выглядит следующим образом:

dbDriver              = com.microsoft.sqlserver.jdbc.SQLServerDriver
dbUser                = user
dbPass                = password
dbServer              = localhost:1433;databaseName=testDb
dbUrl                 = jdbc:sqlserver://localhost:1433

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

Можно ли как-нибудь получить учетные данные аутентификации пользователя Windows и использовать ту аутентификацию для SQL Server?

ОБНОВЛЕНИЕ : Я знаю, что в ASP.net есть способ настроить проверку подлинности Windows для доступа к веб-приложению, и это именно то, что я ищу, кроме того, что я хочу передать этот токен SQL Server для доступа к базе данных.

Ответы [ 5 ]

76 голосов
/ 10 декабря 2008

Я не думаю, что можно передавать учетные данные пользователя из браузера в базу данных (и имеет ли это смысл? Думаю, что нет)

Но если вы хотите использовать учетные данные пользователя, запускающего Tomcat, для подключения к SQL Server, вы можете использовать драйвер JDBC от Microsoft. Просто создайте свой URL JDBC следующим образом:

jdbc:sqlserver://localhost;integratedSecurity=true;

И скопируйте соответствующую DLL в каталог bin Tomcat (sqljdbc_auth.dll, поставляемый с драйвером)

MSDN> Подключение к SQL Server с драйвером JDBC> Создание URL-адреса подключения

25 голосов
/ 29 апреля 2009

посмотрите на

http://jtds.sourceforge.net/faq.html#driverImplementation

Какой формат URL используется jTDS?

Формат URL для jTDS:

jdbc:jtds:<server_type>://<server>[:<port>][/<database>][;<property>=<value>[;...]]

... домен Указывает домен Windows, в котором выполняется аутентификация. Если присутствует и указаны имя пользователя и пароль, jTDS использует аутентификацию Windows (NTLM) вместо обычной аутентификации SQL Server (т.е. предоставленные имя пользователя и пароль - это имя пользователя и пароль домена). Это позволяет клиентам, не являющимся Windows, войти в систему на серверах, которые настроены только на проверку подлинности Windows.

Если параметр домена присутствует, но имя пользователя и пароль не указаны, jTDS использует собственную библиотеку единого входа и выполняет вход с учетными данными зарегистрированного пользователя Windows (чтобы это работало, очевидно, нужно было бы использовать Windows , вошли в домен, а также установили библиотеку единого входа - обратитесь к README.SSO в дистрибутиве, чтобы узнать, как это сделать).

7 голосов
/ 12 января 2012

Это на самом деле работает для меня:

В соответствии с файлом README.SSO, поставляемым с дистрибутивом jtdsd:

Чтобы единый вход работал, jTDS должен иметь возможность загружать собственную библиотеку SPPI ntlmauth.dll. Поместите эту DLL в любом месте системного пути (определяется системной переменной PATH), и все готово.

Я поместил его в папку jre / bin

Я настроил порт, выделенный для экземпляра сервера sql (2302), чтобы уменьшить потребность в имени экземпляра - я просто делаю это. lportal - это имя моей базы данных.

jdbc.default.url=jdbc:jtds:sqlserver://192.168.0.147:2302/lportal;useNTLMv2=true;domain=mydomain.local
5 голосов
/ 05 октября 2008

Если у вас нет веских причин не рекомендовать этого, я предлагаю отключить драйвер MS JDBC.

Вместо этого используйте драйвер jtds jdbc . Прочтите файл README.SSO в дистрибутиве jtds, чтобы узнать, как настроить единый вход (собственная аутентификация) и куда поместить собственную DLL, чтобы она могла быть загружена JVM.

3 голосов
/ 17 декабря 2009

У меня была проблема с подключением к MS SQL 2005 с использованием проверки подлинности Windows. Я смог решить проблему с помощью этого и других форумов. Вот что я сделал:

  1. Установите драйвер JTDS
  2. Не используйте свойство domain = в строке jdbc: jtds :: // [:] [/] [; = [; ...]]
  3. Установите ntlmauth.dll в каталоге c: \ windows \ system32 (регистрация dll не требовалась) на компьютере веб-сервера.
  4. Измените учетную запись для службы Apache Tomcat на пользователя домена с доступом к серверу базы данных SQL (пользователю не нужно было иметь доступ к dbo.master).

Моя среда: Клиника Windows XP, на которой размещается Apache Tomcat 6 с бэкэндом MS SQL 2005 на Windows 2003

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...