Как ограничить использование веб-сервисов в Java-приложении?

Предположим, что у меня есть серверное приложение Java, которое реализует несколько веб-сервисов. Предположим также, что я могу аутентифицировать пользователей приложений.

Теперь я хотел бы добавить некоторые ограничения для каждого пользователя к использованию службы: например. (запросы в секунду), максимальный размер запроса и т.д.

Есть ли какая-нибудь "готовая к использованию" библиотека в Java?

Ответ 1

Вы можете сделать это с помощью Apache CXF, настроив перехватчик. На этой странице приведен пример конфигурации высокого уровня. Эта страница содержит сведения о перехватчиках. Вы можете получить такую ​​же фантазию, сколько пожелаете, с вашей проверкой. Я не знаю, как получить аутентифицированного пользователя.

Ответ 2

Мне еще нужно увидеть что-то подобное. Но если вы используете встроенную защиту Java EE, вы можете загрузить ее, используя свой собственный LoginModule, где вы можете выполнить эти проверки, не касаясь кода веб-службы.

См. http://docs.oracle.com/javase/6/docs/technotes/guides/security/jaas/JAASLMDevGuide.html

Ответ 3

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

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

Ответ 4

Вам нужно создать класс простых перехватчиков. Существует метод onPreExecute(), где вы можете поместить свою собственную проверку. Я использовал его с Spring.