Реализация базовой / дайджест-аутентификации в коде сервера 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), см., Например:

К сожалению, принятие JASPIC/JASPI/JSR 196 кажется в лучшем случае более призрачным. На данный момент люди, кажется, доверяют конкретным областям AS, модулям входа и тому, что вам намного лучше, или просто не знают об альтернативах.

Другие вопросы по тегам