Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Windows single sign-on


Автор: Stampede 1.11.2007, 01:46
Вот понадобилось сделать такую вещь: есть серверное/веб приложение, которое крутится на Windows серваке. Есть клиентские машины, которые сидят в этом же интранете, под той же виндой. Хочется, чтобы они могли ходить в веб-прогу без необходимости лишний раз вводить свои виндусовые логин/пароль.

Ума не приложу, можно ли сделать такую вещь. Что должно присылаться с браузера, чтобы сервер мог это дело прокачать через NTLM? Сама по себе NTLM аутентификация при помощи jcifs работает нормально, но для этого ей надо передать логин и пароль, а клиентская машина же ведь не выдаст такую инфу?

Кто чего подскажет?

Автор: tux 1.11.2007, 08:04
Встречный вопрос. А из каких браузеров нужно логиниться? Если только IE, то знаю как сделать. Если нужно что-то еще, то я добиться работы с firefox, например, не смог, хотя вроде бы NTLM он поддерживает.

Автор: Stampede 1.11.2007, 09:09
tux, очень интересно, пускай хотя бы только для IE. Мне бы хотя бы зацепочку...

Автор: tux 1.11.2007, 09:48
Цитата(Stampede @  1.11.2007,  09:09 Найти цитируемый пост)
Мне бы хотя бы зацепочку...

Вечером по Москве из дома закину код фильтра для аутентификации пользователя через NTLM. Еще насколько я помню jsa реализовывал тоже самое в jcifs, может чего подскажет.

Автор: avvo 1.11.2007, 16:44
IE выдает хэши паролей в интранет, если поставить в настройках нужную галку.
Проверяются именно эти хэши. Даже при доступе к какому-нить ресурсы винды проверяются хэши.
Если Вы используете фильтр jcifs, как это показано http://jcifs.samba.org/src/docs/ntlmhttpauth.html, то зачем Вам знать пароль. У Вас будет имя пользователя, а сервер аутентификации (им может быть любая машина в домене AD) проверит правильность хэша пароля, который ему вышлет IE из текущей сессии.

Автор: tux 1.11.2007, 20:42
avvo хорошую ссылку привел, вот примерно так все и выглядит. Кстати, там же написано, что NTLM-аутентификация возможна только с IE и действительно реально никакие пароли никуда не передаются. Во вложении код фильтра, вставлять в текст сообщения не дает, сообщение получается слишком большим. Все классы приводить не стал, из самого фильтра в принципе понятно как выглядит процесс. Аутентификация трехфазовая по довольно сложной схеме. Если есть вопросы, попробую вспомнить суть дела. В общем-то фильтр jcifs делает ровно тоже самое и если бы я о нем тогда знал, не писал бы все это. smile

Автор: Stampede 2.11.2007, 23:21
Знач отчитуюсь smile

Инфа, которую привели avvo и tux, очень пригодилась. Но не все оказалось так просто. Так, NTLM HTTP Filter от jCIFS не устроил своей закрытостью, а в примере LoginFilter обнаружился ряд непоняток, причем в самых неподходящих местах (например, вызов support.checkUserCredentials(username, "", true) с пустым паролем.

В итоге помогло скачивание сырцов jCIFS и творческая переработка под свои потребности. Как оказалось, задача действительно решаемая, и более того, решение работает не только в IE, но и в Firefox тоже.

avvo и tux получают по заслуженному плюсу. Очень помогли, спасибо!


Автор: jsa 4.11.2007, 15:17
Stampede, кроме jcifs есть еще http://www.stanford.edu/services/webauth/ (правда вся заморчка через керберос), от стенфордского университета, сам не пробавал, но вроде бы интересная должна быть вещица
ЗЫЖ если вдруг займешся всерьез, то было бы интересно узнать отзывы

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