Как ограничить использование веб-сервисов в 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.