2014-01-24 7 views
2

Я заинтересован в использовании чего-то вроде TomEE (реализация веб-профиля Java EE 6) для создания веб-сайта (в таком инструменте, как Eclipse или NetBeans), так как для меня привлекательны следующие вещи: :Структура регистрации пользователей для java

  • OOB слой данных в комплекте с транзакциями, POJO/JPA, чтобы избежать написания базы данных слоя, пулами соединений/кэширование для производительности, оптимистический параллелизм
  • MVC концепции для уровня представления (т.е. JSF)
  • коммуникационные возможности другим компонентам java, работающим на других экземплярах JVM

Далее я хотел бы определить возможность включения некоторых дополнительных строительных блоков, чтобы дать мне основу для типичного механизма регистрации/входа в веб-образе.

Дело в том, что я могу потерять слишком большую гибкость и контроль, если бы я пошел с полномасштабной веб-картой, такой как Play, Vaadin или Grails. Тем не менее, я хотел бы также, чтобы избежать необходимости изобретать колесо путем реализации следующих механизмов полностью на моей: проверка

  • Email при регистрации
  • восстановление Восстановить пароль/счет [Update: Emmet]
  • CAPTCHA, при регистрации [Update: Spring Security 3: Integrating reCAPTCHA Service, Emmet]
  • Рецензированная реализация обработки паролей/хранения
  • Приятно иметь: Выравнивание с OWASP безопасности передовой практикой
  • Приятно иметь: Basic администрирование пользователей [Update: Emmet]

В идеале я хотел бы механизм аутентификации/авторизации, который использует расширяемый Уровень POJO в комплекте с базовыми образцовыми страницами. Из моих исследований кажется, что JAAS, вероятно, не собирается сокращать его, и я немного расплывчатый, если проекты, такие как Apache Shiro, Spring Security, DeltaSpike или PicketLink, дадут мне толчок в направлении вперед или если это излишество.

Может ли кто-нибудь более знакомый с экосистемой java объяснить, что доступно, чтобы устранить разрыв между реализацией веб-профиля и описанными выше функциями (а именно, системой регистрации/регистрации пользователя)?

ответ

3

Безопасность от несанкционированного доступа, насколько я знаю, является «низкоуровневой» безопасностью: то есть она используется для предотвращения доступа пользователей к ресурсам веб-приложений, таких как доступ к частям кода или веб-страниц, или к другим веб-приложения «ресурсы». Регистрация пользователя, CAPTCHA, которую вы, вероятно, могли бы реализовать самостоятельно (возможно, используя существующие компоненты/библиотеки, например, https://stackoverflow.com/a/220452/999264 для CAPTCHA и т. Д.) И интегрируйте его с помощью защиты от пружины.

3

Проверьте рамки Emmet, который содержит расширения на пружинной защите, в нем есть несколько функций, которые вы упомянули, хотя и не все. Если вы решите реализовать некоторые компоненты самостоятельно, это может помочь взглянуть на их код.

Но для Java Spring Security, по-видимому, является самым широко распространенным решением, так как оно очень настраивается - вы можете, например, настроить его для хранения пользователей в базе данных или LDAP, предоставления доступа на основе ролей или списков управления доступом и т. Д. ,

Я думаю, что никакая инфраструктура не предусматривает все эти строительные блоки, но для регистрации пользователей, например, существуют внешние службы, которые управляют пользовательской базой данных и отправляют регистрационные транзакционные электронные письма от вашего имени, которые более или менее гарантированно не попадают в спам-почтовый ящик ,

Примером такого обслуживания является mailjet.

Одним из преимуществ собирается полный стек, как Vaadin является то, что эти рамки будут использовать большинство лучших практик OWASP для вас, как положить в место CSRF токены или избежать инъекции скрипта при правильном спасаясь т.д.

Это помогает несколько компенсировать отсутствие гибкости, которая обычно меньше, чем может показаться. Например, в Spring MVC почти все подключается, в Vaadin, если вам не нравится данный виджет, вы можете его настроить и написать свой собственный.

2

CAPTCHA, проверка электронной почты и восстановление пароля не являются частью основных служб безопасности, а также являются дополнительными функциями. Основными услугами являются аутентификация, авторизация и управление сеансами.

Некоторые из аспектов, которые отличают эти технологии являются:

  • ли с помощью специальной технологии «привязывает» вас к нему

  • Сколько разработки пользовательских нужно будет сделать.

  • Шкала и объем, который может поддерживать технология, и усилия, необходимые для ее получения.

Technologies

  • Использование пружины обычно означает, что вам нужно будет принести во всей весенней экосистеме в ваш проект, он делает много вещей для вас и упрощает разработку, но это не означает, довольно плотная связь с пружиной.

  • Apache-Shiro довольно прочный и обеспечивает очень хороший слой абстракции с ослабленным сцеплением, он интегрируется с многочисленными другими технологиями, включая весеннюю безопасность, и обеспечивает интеграцию с JSF.

  • PicketLink - это очень мощная технология со многими функциями безопасности, но может быть не такой, как ключ, как Shiro или Spring, если вы считаете, что по дороге вам понадобится ваша инфраструктура безопасности, и вы сможете реализовать такие функции, как IDP. Picketlink может быть очень хорошим выбором.

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