Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > NT Authentication в MSSQL и Tomcat


Автор: Alagert 23.1.2007, 12:27
Доброго времени суток!

Проясните следующую ситуацию плиз:
Есть Tomcat, запущенный под неким юзером Х. На нем крутиться сервлет, который работает с базой на MSSQL сервере. 
По условию задачи нам нужно юзать NT Authentication. В связи с этим возник вопрос: мы будем пытаться автаризироваться на сервере под юзером Х? 

Заранее спасибо!

Автор: tux 23.1.2007, 13:01
Цитата(Alagert @  23.1.2007,  12:27 Найти цитируемый пост)
мы будем пытаться автаризироваться на сервере под юзером Х? 

А как в условии задачи? Нужно на SQL-сервере авторизоваться? 

Автор: Alagert 23.1.2007, 15:10
Цитата(tux @  23.1.2007,  13:01 Найти цитируемый пост)
А как в условии задачи? Нужно на SQL-сервере авторизоваться?  

С сервлетом работают юзеры некоторого домена, авторизируются в нем по своему доменному логину/паролю (это жесткое условие - поменять никак нельзя) И по логике с этими же данными сервлет должен ломиться к БД серверу. Но тут берут сомнения.

Автор: tux 23.1.2007, 15:16
Цитата(Alagert @  23.1.2007,  15:10 Найти цитируемый пост)
С сервлетом работают юзеры некоторого домена, авторизируются в нем по своему доменному логину/паролю (это жесткое условие - поменять никак нельзя)

Я думаю вот на этом этапе и используется NTLM. То есть у пользователя не надо запрашивать имя и пароль, должны использоваться те credentials, с которыми он вошел в домен.

Цитата(Alagert @  23.1.2007,  15:10 Найти цитируемый пост)
И по логике с этими же данными сервлет должен ломиться к БД серверу. Но тут берут сомнения. 

Правильно берут. Так не делается. Для доступа к данным на соответствующем слое как правило используется одно имя и пароль. Более того, не знаю умеет ли работать с NTLM родной майкрософтовский драйвер (обычно его не рекомендуют использовать), но jtds точно не умеет.

Автор: Alagert 23.1.2007, 15:38
Цитата(tux @  23.1.2007,  15:16 Найти цитируемый пост)
Я думаю вот на этом этапе и используется NTLM. То есть у пользователя не надо запрашивать имя и пароль, должны использоваться те credentials, с которыми он вошел в домен.

Именно так у нас и сделано. С этой частью нет проблем, все работает правильно.

Цитата(tux @  23.1.2007,  15:16 Найти цитируемый пост)
Правильно берут. Так не делается. Для доступа к данным на соответствующем слое как правило используется одно имя и пароль.

Вы имеете ввиду, что неплохо бы иметь непосредственно логин/пасс к SQL серверу? Такой режим у нас тоже есть и работает все норм! 
Но нашему заказчику, блин, нужна возможность NT Authentication. Те я неправильно копаю в сторону Tomcat? Вся бяка в jdbc драйвере?
Кстати, по требованию заказчика, мы вынуждены юзать MS JDBC driver smile

Автор: tux 23.1.2007, 15:43
Цитата(Alagert @  23.1.2007,  15:38 Найти цитируемый пост)
Кстати, по требованию заказчика, мы вынуждены юзать MS JDBC driver

Ну тогда у вас кажется NTLM возможен. Только единственный результат, который вижу от использования NTLM при подключении к базе данных - это геморрой с администрированием. В общем не знаю, никогда такого не видел. А какие-нибудь аргументы заказчик приводит или как обычно - "я хочу", "я не хочу"?

Автор: COVD 23.1.2007, 16:09
Когда в базе прописывается пользователь, то приходится выбирать между Windows Aut.. и SQL Server Aut..  В первом случае прописывается domain, т.е. соединение разрешается только с определенного компьютера. Во втором случае прописывается логин и пароль, т.е. к базе можно подсоединиться с любого компьютера, который видит базу. Наверное , первый вариант более "секюрный" smile

Автор: tux 23.1.2007, 16:24
Цитата(COVD @  23.1.2007,  16:09 Найти цитируемый пост)
первый вариант более "секюрный"

А какая разница? Установка соединения с базой скрыта внутри приложения и наружу не светится.

Автор: COVD 23.1.2007, 17:32
Цитата

А какая разница? Установка соединения с базой скрыта внутри приложения и наружу не светится.


Как я понимаю, в первом случае разрешение дается компьютеру с определенным адресом в сети, т.е. физическому компьютеру.  А во втором - злоумышленнику достаточно узнать логин-пароль и иметь сетевое соединение на базу данных. А злоумышленник может быть и внутри  smile . Мы используем второй вариант.

Автор: tux 23.1.2007, 17:45
Цитата(COVD @  23.1.2007,  17:32 Найти цитируемый пост)
Как я понимаю, в первом случае разрешение дается компьютеру с определенным адресом в сети, т.е. физическому компьютеру. 

Нет. Причем почти что наоборот. Разрешение дается пользователю домена независимо от того с какой машины в сети он подключается. Имя и пароль узнать проще по той причине что таких пользователей больше, а некоторые юзвери еще и имеют обыкновение приклеивать листочек с именем и паролем на монитор. Думаю имя и пароль внутреннего пользователя MSSQL на листочке на мониторе вряд ли кто-то видел.

Автор: COVD 23.1.2007, 18:43
Цитата

Разрешение дается пользователю домена независимо от того с какой машины в сети он подключается.


Возможно, в этом случае проблема перекладывается на администратора сети. Имя и пароль конечно проще. А листочки... девелопер ведь тоже может интересоваться содержанием базы. Особенно, если завтра он увольняется  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)