Camel rest - 允许特定 ip 访问发送请求
Camel rest - Allow specific ip to access send request
我有下面的骆驼休息路线。目前所有主机都可以使用暴露的 URL 访问此路由。
我是否可以根据配置的 IP 限制远程主机访问。
我想允许某些 IP 地址访问此 URL。 camel 中是否有任何配置可用于处理此问题?
rest("/api/")
.id("reset-api-route")
.get("/reset")
.to("direct:resetRoute");
使用 camel-netty4-http 组件,您可以在 headers.
中获得远程 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 中,那么您可以使用 Spring 安全 IP 过滤。另请记住,如果您的应用程序位于负载均衡器之后,那么根据负载均衡器,您可能总是会看到负载均衡器的地址而不是原始调用者。
我有下面的骆驼休息路线。目前所有主机都可以使用暴露的 URL 访问此路由。
我是否可以根据配置的 IP 限制远程主机访问。 我想允许某些 IP 地址访问此 URL。 camel 中是否有任何配置可用于处理此问题?
rest("/api/")
.id("reset-api-route")
.get("/reset")
.to("direct:resetRoute");
使用 camel-netty4-http 组件,您可以在 headers.
中获得远程 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 中,那么您可以使用 Spring 安全 IP 过滤。另请记住,如果您的应用程序位于负载均衡器之后,那么根据负载均衡器,您可能总是会看到负载均衡器的地址而不是原始调用者。