2012-05-30 2 views
0

У меня есть приложение EJB 3 как сервисный слой и веб-приложение Tapestry 5 в качестве его клиента. EJB должны предоставить фасад сеанса для использования веб-приложением.Безопасность EJB3: как отслеживать зарегистрированного пользователя?

Для выполнения операций, определенных на уровне EJB, пользователю необходимо войти в систему через веб-интерфейс. У меня должна быть безопасность на уровне лица, поэтому декларативная безопасность Java EE для меня здесь невелика.

Как мне обеспечить безопасность в этом виде настройки? Я предпочел бы, чтобы он был реализован на уровне EJB, а затем в веб-приложении, если я переключу клиентов.

Я мог бы использовать http-сеанс в веб-приложении для хранения пользовательского сеанса, а затем передать объект User в каждом безгосударственном EJB-вызове.

public void doStuff(params, User user); 

Являются ли сеансы с состоянием сессионным решением здесь?

Редактировать: По уровню безопасности уровня Я имею в виду безопасность на уровне строк.

ответ

1

Что именно вы подразумеваете под защитой уровня сущности?

Если я правильно вас понял, вы напрямую вызываете свой SLSB из своего веб-приложения с зарегистрированным пользователем?

Если это так: Напишите Inteceptor который получает SessionContext впрыскивается как ресурс и аннотировать SLSB с этим перехватчиком ... в @AroundInvoke перехватчика получить принципал из SessionContext и оттуда вы можете делать все, что вы хотите (например, запросить db для пользователя, и если что-то не так, то напрямую выкиньте исключение из Interceptor без его внесения в ваш SLSB).