Можно ли подключиться к SQL Server с помощью проверки подлинности Windows с помощью Java EE webapp?
В настоящее время я изучаю, как сделать подключение к базе данных SQL Server из моего веб-приложения Java EE с использованием проверки подлинности Windows вместо проверки подлинности SQL Server. Я запускаю это приложение от Tomcat 6.0 и использую драйвер JDBC для Microsoft. Файл свойств моих подключений выглядит следующим образом:
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 Authentication и использовать , что для SQL Server?
ОБНОВЛЕНИЕ. Я знаю, что в ASP.net существует способ настроить аутентификацию Windows для доступа к webapp, что именно то, что я ищу, за исключением того, что я хочу передать этот токен для SQL Server для доступа к базе данных.
Ответы
Ответ 1
Я не думаю, что можно вывести учетные данные пользователя из браузера в базу данных (и это имеет смысл? Я думаю, что нет)
Но если вы хотите использовать учетные данные пользователя, запускающего Tomcat для подключения к SQL Server, вы можете использовать драйвер Microsoft JDBC.
Просто создайте URL-адрес JDBC следующим образом:
jdbc:sqlserver://localhost;integratedSecurity=true;
И скопируйте соответствующую DLL в каталог bin Tomcat (sqljdbc_auth.dll с драйвером)
MSDN > Подключение к SQL Server с помощью драйвера JDBC > Создание URL-адреса подключения
Ответ 2
посмотрите
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 использует свою собственную библиотеку Single-Sign-On и входит в систему с зарегистрированными учетными данными пользователя Windows (для этого нужно было, очевидно, быть в Windows, регистрируется в домене, а также имеет установленную библиотеку SSO - проконсультируйтесь с README.SSO в дистрибутиве о том, как это сделать).
Ответ 3
Это действительно работает для меня:
В README.SSO, который поставляется с дистрибутивом jtdsd:
Для того чтобы Single Sign On работал, 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
Ответ 4
Если у вас нет какой-то по-настоящему убедительной причины, я предлагаю отключить драйвер MS JDBC.
Вместо этого используйте jtds jdbc driver. Прочтите файл README.SSO в дистрибутиве jtds о том, как настроить для однократной регистрации (встроенная проверка подлинности) и где разместить собственную DLL для обеспечения ее загрузки JVM.
Ответ 5
У меня возникла проблема с подключением к MS SQL 2005 с использованием проверки подлинности Windows. Я смог решить проблему с помощью этого и других форумов. Вот что я сделал:
- Установите драйвер JTDS
- Не используйте свойство "domain =" в строке jdbc: jtds:://[:] [/] [; = [;...]]
- Установите файл ntlmauth.dll в каталог c:\windows\system32 (регистрация DLL не требуется) на машине веб-сервера.
- Измените идентификатор входа для службы Apache Tomcat на домен пользователя с доступом к серверу базы данных SQL (пользователю не нужно было иметь доступ к dbo.master).
Моя среда:
Платформа Windows XP, в которой размещается Apache Tomcat 6 с бэкэнд MS SQL 2005 в Windows 2003