Как сделать так, чтобы сервис wriiten в java мог обрабатывать запросы только с определенного ip? - PullRequest
0 голосов
/ 14 марта 2019

Я хочу написать приложение на Java, которое состоит из нескольких конечных точек.Я хочу, чтобы эти конечные точки обрабатывали запросы, только если они отправляются с определенного ip.Как я могу это реализовать?

Ответы [ 2 ]

1 голос
/ 14 марта 2019

Веб-приложение

Apache Tomcat

Отредактируйте файл WEB-INF / web.xml в приложении. Добавить следующее:

<filter>
  <filter-name>Remote Address Filter</filter-name>
  <filter-class>org.apache.catalina.filters.RemoteAddrFilter</filter-class>
  <init-param>
    <param-name>allow</param-name>
    <param-value><!-- insert your ip list / regex here --></param-value>
  </init-param>
</filter>
<filter-mapping>
  <filter-name>Remote Address Filter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

Это указывает фильтру блокировать все IP-адреса, кроме включенных. Фильтр поддерживает блокировку только перечисленных IP-адресов. Более подробную информацию о фильтре можно найти здесь.

Пружинный ботинок

Для приложений Spring Boot, которые запускаются со встроенным контейнером Apache Tomcat, что является поведением по умолчанию, используйте тот же фильтр, который описан в разделе Apache Tomcat выше. Это настраивается в коде вместо XML. В документе Spring Boot объясняется, как включить фильтр сервлетов. Используйте инструкции в документе, чтобы включить RemoteAddrFilter.

Spring Boot Document: Документ

1 голос
/ 14 марта 2019

Сделайте что-то подобное, чтобы получить IP-адрес, который сопоставляет этот адрес с вашими предварительно определенными IP-адресами.

@RequestMapping(value = "startup", method = RequestMethod.GET)
public @ResponseBody ProcessResponse startUp(@RequestBody RequestTemplate requestTemplate, HttpServletRequest request) {

        System.out.println(request.getRemoteAddr());
        // some other code
}
...