Декларативная безопасность Java EE, получение ссылки на защищенный компонент от клиента приложения

По 2 вопросам хотел бы с вами проконсультироваться.

Предыстория: я написал тест, приложение Java EE и добавил декларативную защиту. Приложение развернуто на Glassfish 3.1. Для модульного тестирования я использовал JUnit со встроенным контейнером для всех компонентов с локальным интерфейсом. Для точки входа приложения, компонента SessionFacde, который имеет единственный удаленный интерфейс, я написал простой клиент, который получает ссылку на компонент SessionFace. Аннотации безопасности, которые я применил только для bean-компонента SessionFacade.

(Вопрос 1: Какова рекомендуемая стратегия модульного тестирования с безопасностью? Можно ли использовать простой клиент приложения для sessionFacade? (Другие (локальные) компоненты не затрагиваются, так как нет аннотаций безопасности применяются там))

Вопрос 2. Как получить доступ к SessionFacde из клиента приложения? Я был бы очень признателен, если бы вы скопировали сюда несколько примеров кода для application-client.xml и получили ссылку на службу JNDI. Это сэкономит мне много времени. Вопрос аналогичен вопросу в разделе логин Java EE 6 Application Client, но я нашел объяснение (http://docs.oracle.com/cd/E18930_01/html/821-2418/beacm.html), что на самом деле это не рекомендуется, так как это возлагает бремя безопасности на разработчика, а не на платформу. См. приведенный ниже текст:

«[...] Программный вход в систему позволяет разработчику приложения обходить механизмы аутентификации, поддерживаемые сервером GlassFish, и передавать данные аутентификации непосредственно в службу безопасности. Несмотря на гибкость, эту возможность не следует использовать без понимания проблем безопасности.

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

Состояние программного входа не обязательно сохраняется в сеансах или участвует в едином входе.[...]"

Спасибо, что вы прочитали это до сих пор. С уважением, Тамас

Примечание. Поскольку с момента написания исходного сообщения не было ответа, я бы сказал, что этого достаточно, чтобы ответить на второй вопрос. Это помогло бы мне идти дальше. Спасибо, Тамас


person Tamas    schedule 14.05.2012    source источник
comment
Примечание: Поскольку с момента написания исходного сообщения не было ответа, я бы сказал, что этого достаточно, чтобы ответить на второй вопрос. Это помогло бы мне идти дальше. Спасибо, Тамас   -  person Tamas    schedule 15.05.2012