Задать вопрос
@daron666
java/scala developer

Как реализовать аутентификацию и авторизацию веб сервисов?

Добрый день.
Возник вопрос. Как же всё таки реализовать контейнеро-независимую авторизацию для веб приложения?
Что опробовано:
Настройка JAAS на Glassfish4
Чем не устроило:
Надо настраивать контейнер. А не хотелось бы этого делать. В идеале хотелось бы всё разрешать кодом.
Какие возникли проблемы:
При написании своего ContextRequestFilter для Jesrey RESTful сервисом всё заработало. Использована для примера BASIC авторизация. Заработали аннотации вида
RolesAllowed etc. Но! Они работают только с классами ресурсами. Если же класс аннотировать как @Stateless например, то для него этот фильтр не работает. Копание вглубь дало такие результаты. Когда мы фильтруем запросы мы создаем своё SecurityContext который работает для классов ресурсов. А вот @Stateless уже используют свой EJBContext до которого достучаться не получается никак кроме как через настройку контейнера. Сделать всё это очень хочется в рамках стандарта и максимально независимо от платформы.
Очень хотелось бы услышать ваши варианты и мысли по этому поводу.
  • Вопрос задан
  • 5168 просмотров
Подписаться 4 Оценить 1 комментарий
Пригласить эксперта
Ответы на вопрос 3
@baadf00d
spring security кажется вполне себе независимым, хотя если быть честным — юзал его исключительно под томкатом :)
Ответ написан
@bobzer
Java EE Developer
Мне кажется, что чтобы не зависеть от контейнера, есть два основных варианта:

1. Сделать всё самому. Например в бизнес-логику веб-сервиса добавить поля, которые нужны для авторизации (пользователь/пароль, например). Тупой и очень простой метод. Пожалуй, единственный его плюс — 100% контроль над процессом в вашей бизнес-логике, да и то, если этот контроль вам действительно нужен.
2. Использовать какой-либо распространенный стандарт, реализуемый всеми известными контейнерами. Т.е., независимость от контейнера при таком подходе подразумевает, что если стандарт реализован везде, то можно не беспокоится о том, что при смене контейнера будут сюрпризы. Например, WS-Security — распространенный, стабильный стандарт.

Кстати, смешение двух подходов тоже может иметь место. Я, например, использовал стандарт WS-Security, но в виду того, что мне нужны были дополнительные обработки, я отказался от реализации контейнера и написал свой обработчик.

Вообще, вариантов может быть немало, все зависит от имеющегося времени и желания искать и разбираться.
Ответ написан
@daron666 Автор вопроса
java/scala developer
Думаю будет интересно. Я пошел вот таким путем jaspic tutorial.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы