Ограничить использование сервера для внутреннего использования - PullRequest
3 голосов
/ 10 ноября 2011

У меня есть веб-сервис REST, использующий Spring MVC, который обращен наружу. Я хотел бы ограничить доступ к некоторым вызовам REST для использования администратором и для других серверов в той же внутренней сети для вызова.

Пока я могу думать о следующих решениях:

  1. Использование Spring-Security для ограничения сопоставления подсети с использованием доступа hasIpAddress
  2. Разделите конфиденциальные вызовы REST в их собственный контроллер и запишите точку входа AOP, которая считывает HttpServletRequest для IP-адреса и проверяет белый список

Мне не нравится ни одно из решений. (1) не дает мне достаточной гибкости, я могу быть в нескольких подсетях и, возможно, захочу только открыть диапазон IP-адресов. (2) Дает мне почти точно то, что я хочу, но это кажется хакерским, должен быть лучший способ сделать это.

Ответы [ 3 ]

0 голосов
/ 10 ноября 2011

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

0 голосов
/ 10 января 2012

Если вы используете обратный прокси-сервер, такой как Apache, простейшим решением было бы обработать это там.

В Spring Security вы бы создали подкласс AbstractPreAuthenticatedProcessingFilter, который содержит вашу логику, связанную с IP, и выполняет аутентификациюзапрос в качестве принципала с ROLE_ADMIN.

0 голосов
/ 10 ноября 2011

(2) почему вы не хотите использовать «стандартные» аннотации, такие как @PreAuthrize. Вы можете поместить их в методы, поэтому вам не нужно перемещать чувствительные методы REST на другой контроллер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...