Могу ли я подключиться к SQL Server, используя проверку подлинности Windows из веб-приложения Java EE?

StackOverflow https://stackoverflow.com/questions/167464

Вопрос

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

<Ол>
  • Установите драйвер JTDS
  • Не используйте " домен = " свойство в строке jdbc: jtds :: // [:] [/] [; = [; ...]]
  • Установите ntlmauth.dll в каталог c: \ windows \ system32 (регистрация dll не требовалась) на компьютере веб-сервера.
  • Измените идентификатор входа для службы Apache Tomcat на пользователя домена с доступом к серверу базы данных SQL (пользователю не нужно было иметь доступ к dbo.master).
  • Моя среда: Клиника Windows XP, на которой размещается Apache Tomcat 6 с бэкэндом MS SQL 2005 в Windows 2003

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top