Реализация базовой / дайджест-аутентификации в коде сервера Java / веб-сервере
Нам нужно поддерживать базовую аутентификацию и последующую дайджест-аутентификацию в веб-проекте Java. Мое сомнение
- Является ли базовая / дайджест-проверка подлинности конфигурацией на веб-сервере (tomcat, jboss и т. Д.). Наши пользователи / пароль находятся в базе данных SQL, и мы получаем их через службы данных. В этом случае, как я могу настроить веб-сервер для использования сервисов данных для аутентификации?
- Нужно ли обрабатывать явно в коде для базовой / дайджест-аутентификации? Как я получу запрос на аутентификацию от Servlet и подключусь к dataservices для аутентификации?
2 ответа
Базовая и дайджест-аутентификация охватываются спецификацией сервлета. Прочтите спецификацию или этот урок, чтобы узнать, как это работает.
Однако, где хранятся учетные данные и как они проверяются, остается на усмотрение каждого контейнера. Tomcat поддерживает множество реализаций Realm (на основе файлов, на основе JDBC, на основе LDAP и т. Д.). Не знаю для JBoss.
В Java EE безопасность по умолчанию декларативна. Это означает, что вы указываете только те ресурсы, которые хотите защитить, с помощью абстрактной концепции, называемой Role
,
В дополнение к ответу JB Nizet, специальные модули входа в систему JBoss AS (примерно эквивалентные реализациям Tomcat's Realm) можно найти здесь: http://docs.jboss.org/jbosssecurity/docs/6.0/security_guide/html/Login_Modules.html
Замечательно неизвестный многим (как кажется), Java EE 6 также поддерживает стандартизированные модули аутентификации. Это файлы, JDBC и т. Д., Которые обычно считаются специфичными для сервера приложений / контейнера.
Это делается с помощью так называемого JASPIC API (он же JASPI, он же JSR 196), см., Например:
- JBoss AS7: включение аутентификации JASPI для веб-приложений
- Реализация собственного провайдера аутентификации с использованием JASPI
- Подключаемая аутентификация на веб-уровне Glassfish
К сожалению, принятие JASPIC/JASPI/JSR 196 кажется в лучшем случае более призрачным. На данный момент люди, кажется, доверяют конкретным областям AS, модулям входа и тому, что вам намного лучше, или просто не знают об альтернативах.