Ответ 1
Вы должны использовать защиту JAAS, предоставляемую контейнерами Servlet, такими как Tomcat, Websphere, Glassfish.
По умолчанию эти контейнеры поддерживают эти типы проверки подлинности:
- BASIC
- ДАЙДЖЕСТ
- FORM
- CLIENT-CERT
Основная аутентификация HTTP
Задание базовой аутентификации HTTP требует, чтобы сервер запрашивал имя пользователя и пароль от веб-клиента и проверял, что имя пользователя и пароль действительны, сравнивая их с базой данных авторизованных пользователей в указанной области или по умолчанию.
Обычная проверка подлинности является по умолчанию, если вы не указали механизм аутентификации.
Когда используется базовая аутентификация, выполняются следующие действия:
- Клиент запрашивает доступ к защищенному ресурсу.
- Веб-сервер возвращает диалоговое окно с запросом имени пользователя и пароля.
- Клиент отправляет на сервер имя пользователя и пароль. 4.\Сервер аутентифицирует пользователя в указанной области и, в случае успеха, возвращает запрошенный ресурс.
На рисунке ниже показано, что происходит, когда вы указываете базовую аутентификацию HTTP.
HTTP Basic Authentication Диаграмма четырех этапов базовой аутентификации HTTP между клиентом и сервером
Аутентификация на основе форм
Аутентификация на основе форм позволяет разработчику контролировать внешний вид экранов аутентификации входа, настраивая экран входа и страницы ошибок, которые браузер HTTP предоставляет конечному пользователю. Когда объявляется аутентификация на основе формы, выполняются следующие действия.
- Клиент запрашивает доступ к защищенному ресурсу.
- Если клиент не аутентифицирован, сервер перенаправляет клиент на страницу входа.
- Клиент отправляет форму регистрации на сервер.
- Сервер пытается аутентифицировать пользователя.
- Если аутентификация прошла успешно, проверяется аутентифицированный пользователь, чтобы убедиться, что он принадлежит роли, которая имеет право доступа к ресурсу. Если пользователь авторизован, сервер перенаправляет клиента на ресурс, используя сохраненный путь URL.
- Если аутентификация завершается неудачно, клиент перенаправляется или перенаправляется на страницу с ошибкой.
Ниже показано, что происходит, когда вы указываете аутентификацию на основе форм.
Когда вы создаете логин на основе формы, обязательно поддерживайте сеансы с использованием файлов cookie или информации сеанса SSL.
Чтобы аутентификация выполнялась надлежащим образом, действие формы входа всегда должно быть j_security_check. Это ограничение делается так, что форма входа будет работать независимо от того, для какого ресурса она предназначена, и чтобы не требовать от сервера указания поля действия исходящей формы. Следующий фрагмент кода показывает, как форма должна быть закодирована на HTML-странице:
<form method="POST" action="j_security_check">
<input type="text" name="j_username">
<input type="password" name="j_password">
</form>
Аутентификация дайджеста
Как и обычная аутентификация, аутентификация дайджеста аутентифицирует пользователя на основе имени пользователя и пароля. Однако, в отличие от базовой аутентификации, аутентификация дайджеста не отправляет пользовательские пароли по сети. Вместо этого клиент отправляет односторонний криптографический хеш пароля и дополнительных данных. Хотя пароли не отправляются на проводе, для аутентификации дайджеста требуется, чтобы эквивалентные эквиваленты паролей были доступны для контейнера проверки подлинности, чтобы он мог проверять полученные аутентификаторы, вычисляя ожидаемый дайджест.
Литература: