Могу ли я подключиться к SQL Server, используя проверку подлинности Windows из веб-приложения Java EE?
-
03-07-2019 - |
Вопрос
В настоящее время я изучаю, как подключиться к базе данных 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 для доступа к базе данных.
Решение
Я не думаю, что можно передавать учетные данные пользователя из браузера в базу данных (и имеет ли это смысл? Думаю, что нет)
Но если вы хотите использовать учетные данные пользователя, на котором запущен Tomcat, для подключения к SQL Server, вы можете использовать драйвер JDBC от Microsoft. Просто создайте свой URL JDBC следующим образом:
jdbc:sqlserver://localhost;integratedSecurity=true;
И скопируйте соответствующую DLL в каталог bin Tomcat (sqljdbc_auth.dll, входящий в комплект поставки драйвера)
MSDN > Подключение к SQL Server с помощью драйвера JDBC > Создание URL-адреса подключения
Другие советы
посмотри на
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 и войти в систему). домен, а также установить библиотеку SSO — как это сделать, обратитесь к README.SSO в дистрибутиве).
Это на самом деле работает для меня:
В соответствии с файлом 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
Если у вас нет веских причин не делать этого, я предлагаю отключить драйвер MS JDBC.
Вместо этого используйте драйвер jtds jdbc . Прочтите файл README.SSO в дистрибутиве jtds, чтобы узнать, как настроить единый вход (собственная аутентификация) и куда поместить собственную DLL, чтобы она могла быть загружена JVM.
У меня возникла проблема с подключением к MS SQL 2005 с использованием проверки подлинности Windows. Я смог решить проблему с помощью этого и других форумов. Вот что я сделал:
<Ол>Моя среда: Клиника Windows XP, на которой размещается Apache Tomcat 6 с бэкэндом MS SQL 2005 в Windows 2003