Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Java EE (J2EE) и Spring > TOMCAT BASIC vs FORM authentication |
Автор: Atum 18.1.2013, 14:29 | ||||||||||||||||
Добрый день! Вопрос такой Чем FORM authentication лучше BASIC authentication ?! Задался таким вопросом - ведь при BASIC authentication - пароль передается в заголовке и при этом хранится там постоянно . а при FORM authentication - пароль и логин передаются в теле POST запроса (в открытом виде ? так или нет). вот мой пример ! По ходу написания примера буду задавать сопутствующие вопросы ! (выделю их жирным) что делаю - есть проект WebApplication1 - созданный в netbeans ( добавлены несколько jsp страниц , один сервлет и один фильтр) Есть tomcat 7 для BASIC authentication Для примера у меняя будет : пользователь user - пароль user1 - role user_role пользователь root - пароль root1 - role root_role Используется собственное окно браузера : 1. Прописываем ему web.xml
2. Tomcat - tomcat-users.xml
3. server.xml Вопрос ! Нужно ли это прописывать в server.xml ?
Первая проблема - это - проблема как выйти и зайти под другим пользователем ! Ибо в таком режиме авторизации пароль постоянно ходит в заголовке ! Сначала сделал так : 4. logout (logout.jsp)
Пришлось делать так !
Минус в том что мы не попадаем на главную страну ! Как его обойти ? FORM authentication для наглядности я взял и создал таблицу для хранения логина и пароля в mysql чтобы не создавать две таблицы user и role - я поместил все данные в одну таблицу с полями id- name - password - role 1. Меняем тип авторизации в web.xml :
2. Удаляем все что вставили в tomcat-users.xml 3. Создаем login.jsp
3. в context.xml добавим коннект к базе и Realm
тут важно добавить Realm className="org.apache.catalina.realm.DataSourceRealm Пароль и логин передаются в теле пост запроса . Хочется как то это изменить !? |
Автор: mbasil 23.1.2013, 08:46 |
В чем вообще проблема? Небезопасен и тот и другой вариант. По хорошему надо аутентифицировать через SSL. |
Автор: Atum 23.1.2013, 08:59 | ||
Еще есть дайджест аутентификация. Да ssl - это самое безопасное из всего перечисленного. Но иногда требуется и простая авторизация . вопрос как сделать авторизацию через форму с шифрованием пароля ? |
Автор: mbasil 23.1.2013, 12:22 |
Можно зашифровать функцией JavaScript. Однако это будет открыто для самого пользователя. На мой взгляд, если все данные шифровать не требуется используйте HTTP, и только запрос и возврат формы аутентификации через HTTPS |
Автор: mbasil 31.1.2013, 11:02 |
Кстати мое предыдущее сообщение грешит неполнотой. Если мы основные страницы будем передавать через HTTP, то злонамерененный кадр может, перехватив HTTP запрос, из куки или из переопределнного URL выковырять ID клиента и заслать свой запрос с этим же ID. Я не знаю, храниться ли ID сам по себе или совместно с адресом из которого пришли полномочия? Если аутентифицированный клиент распознается только по ID, то при использовании HTTP с возможностью перехвата ID проблема не снимается и в этом случае надо использовать HTTPS на протяжении всего сеанса. |