С компонентом 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. Также имейте в виду, что если ваше приложение находится за балансировщиком нагрузки, то в зависимости от балансировщика нагрузки вы всегда можете увидеть адрес балансировщика нагрузки вместо исходного абонента.