| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 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 |
Вечером по Москве из дома закину код фильтра для аутентификации пользователя через 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 делает ровно тоже самое и если бы я о нем тогда знал, не писал бы все это. |
| Автор: Stampede 2.11.2007, 23:21 |
| Знач отчитуюсь Инфа, которую привели 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/ (правда вся заморчка через керберос), от стенфордского университета, сам не пробавал, но вроде бы интересная должна быть вещица ЗЫЖ если вдруг займешся всерьез, то было бы интересно узнать отзывы |