Безопасность Java
В случае типичного приложения Java 2 Enterprise Edition (J2EE) основным клиентом обычно является браузер, использующий HTTP. Есть несколько способов аутентификации по этому протоколу и одно из преимуществ J2EE состоит в том, что веб-контейнер действительно осуществляет аутентификацию. Процесс происходит прозрачно для приложений. Аутентификация для веб-приложений J2EE чаще всего задается декларативно добавлением ограничивающего условия в дескриптор размещения веб-приложения.
Три основных метода регистрации пользователя, поддерживаемых контейнерами J2EE,- это базовая HTTP-аутентификация, аутентификация по форме и аутентификация по сертификату клиента. Некоторые контейнеры также используют дайджест-аутентификацию HTTP.
Базовая аутентификация HTTP задействует механизмы, уже встроенные в протокол HTTP. При запросе защищенного ресурса контейнер посылает веб-клиенту ответ 401 HTTP. Браузер последовательно собирает полномочия пользователя обычно через диалоговое окно регистрации в системе, шифрует идентификатор пользователя и пароль и возвращает их в следующем HTTP-запросе контейнеру как часть заголовка этого запроса.
При аутентификации по форме J2EE возвращает страницу, являющуюся по сути HTML-формой, запрашивающей у клиента имя пользователя и пароль. Когда клиент передает форму, контейнер перехватывает запрос, извлекает из формы информацию об имени пользователя и пароле и проводит аутентификацию. Если пользователь авторизован для просмотра ресурса, который он запрашивал, контейнер обслуживает запрос для защищенного ресурса. Преимущество аутентификации по форме в том, что она может осуществляться при помощи страницы HTML, которая встраивается в схему представления веб-приложения. Чтобы использовать для приложений аутентификацию по форме, разработчик просто назначает HTML-страницу, которая будет отображена браузером в случае успешного входа в систему. Контейнер затем непрерывно перехватывает все запросы для защищенных ресурсов и использует вышеописанную аутентификацию пользователя. Впоследствии приложение не получит доступа к полномочиям пользователя. Все детали аутентификации будет реализовывать контейнер. Аутентификация по форме обычно использует метод HTTP POST и пересылает данные по сети без шифрования.
Аутентификация по сертификату клиента требует, чтобы клиент имел подписанный сертификат Х509, который содержит информацию об открытом ключе клиента с дайджестом, подписанным как доверенным секретным ключом (от СА), так и секретным ключом клиента.