2010-08-05 4 views
6

Какой наилучший подход/метод для обеспечения безопасности в Java EE? (JPA/JSPs)Безопасность Java EE - какой метод использовать?

Я работаю над личным проектом, так что я могу научиться Java EE и я немного запутался о том, как подойти к процесс AUTHORIZATION и AUTHENTICATION на моем сайте.

У меня разные роли, и я не хочу, чтобы некоторые пользователи обращались к определенным частям веб-сайта. Поэтому я искал документы и учебники и т. Д., Но все, что я нахожу, датируется более 3-4 лет назад. Есть ли что-нибудь более недавнее, что я должен изучить?

Вот некоторые из вещей, которые я нашел:

http://www.oracle.com/technetwork/developer-tools/jdev/oc4j-jaas-login-module-083975.html

Любая помощь будет принята с благодарностью !!! :)

ответ

1

Недавно я работал над приложением Java EE с JAAS. Это довольно актуально, вы можете проверить это home page at Oracle.

Он работает с ролями, аутентификации и т.д.

Вы можете использовать его в JBoss и Glassfish, вероятно, остальные заднице тоже.

+0

Просто интересно, почему все думают, что JAAS может использоваться непосредственно в Java EE без упоминания JASPIC? См. Http://java.sys-con.com/node/1002315 –

1

Что-то более новое, чем JAAS - это основа Spring Security. Он поддерживает JSR-350 (EJB 3) и, таким образом, отлично работает в Java EE.

+0

Я открываю весну, и я никогда не перестаю удивлять меня. Хорошо, теперь мне нужно прочитать о Spring Security ... –

3

Spring Security. Хотя он заклеймен как весна, you might find it useful for web applications; обратите внимание, что вам не нужно писать приложение Spring для использования Spring Security.

Если вы хотите придерживаться JAAS, я бы предложил использовать один из модулей входа в контейнер, чтобы начать работу, прежде чем пытаться написать свой собственный модуль входа. Будьте предупреждены, что вы можете написать письмо, если поставляемые контейнером модули не соответствуют вашим требованиям. И есть хороший book on JAAS, чтобы помочь вам разобраться в деталях.

Кроме того, взгляните на Servlet spec 3.0, чтобы узнать, как можно использовать аннотации. Объявите роли (@DeclareRoles, которые входят в спецификацию сервлета 2.5) в самом сервлете, прежде чем определять, какие роли имеют доступ к тому, что HTTP-метод (используя @RolesAllowed). Вы также можете использовать аннотации, такие как @DenyAll и @PermitAll, чтобы разрешить или запретить доступ ко всем пользователям. @TransportProtected обеспечит доступ к HTTP-методу через HTTPS. Все, что нужно сделать, - сопоставить эти роли в исходном коде, с реальными ролями в области JAAS; это часто делается с использованием файла дескриптора, специфичного для контейнера.

ADDENDUM

Поскольку вы используете JSP-страницы, а не Facelets или какой-либо другой технологии для уровня представления, вы можете быть заинтересованы в JSP tags offered by Spring Security. Гораздо чище сохранить все метаданные авторизации в огромном файле web.xml.

Что касается JPA, то основной доступ к ним обычно применяется в сервлетах или EJB. Разумеется, вы можете создавать более программную безопасность на основе ваших потребностей - использование сущностных прослушивателей поможет в этом процессе, так как вы сможете перехватывать операции загрузки, обновления и сохранения (если вы такие, но, по большей части, безопасность до того, как ваша бизнес-логика будет выполнена, обычно является достаточной).

И о, взгляните на JBoss Seam (и безопасность сейфа), поскольку это полная инфраструктура разработки приложений, построенная на Java EE.

+0

Спасибо всем вам !!! Я обязательно проверю все это ... :) – Johan

Смежные вопросы