Отдых на верблюде - разрешить конкретному ip доступ к запросу на отправку - PullRequest
0 голосов
/ 24 апреля 2019

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

Есть ли возможность ограничить доступ удаленного хоста на основе настроенного IP-адреса. Я хочу разрешить определенному IP-адресу доступ к этому URL. Есть ли в верблюде какая-либо конфигурация для этого?

rest("/api/")
        .id("reset-api-route")
        .get("/reset")
        .to("direct:resetRoute");

1 Ответ

1 голос
/ 24 апреля 2019

С компонентом camel-netty4-http вы можете иметь удаленный IP-адрес в заголовках.

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

С помощью camel-netty4-http вы можете проверять и выполнять логику с удаленным IP следующим образом:

@Override
public void configure() throws Exception {
    restConfiguration()
        .component("netty4-http")
        .host("localhost")
        .port(8000)
        .bindingMode(RestBindingMode.auto);


    rest("/api/")
    .id("reset-api-route")
    .get("/reset")
    .to("direct:resetRoute");

    from("direct:resetRoute")
        .log("${in.headers.CamelNettyRemoteAddress}")
        .choice()
            .when(header("CamelNettyRemoteAddress").startsWith("/127.0.0.1:")) // localhost
                .transform().constant("allowed").endChoice()
            .otherwise()
                .transform().constant("denied");
}

Если ваше приложение Camel работает внутри Spring-Boot, тогда вы можете использовать IP-фильтрацию Spring Security. Также имейте в виду, что если ваше приложение находится за балансировщиком нагрузки, то в зависимости от балансировщика нагрузки вы всегда можете увидеть адрес балансировщика нагрузки вместо исходного абонента.

...