骆驼休息-允许特定的IP访问发送请求

时间:2019-04-24 05:40:11

标签: apache-camel camel-http

我有以下骆驼休息路线。当前,所有主机都可以使用公开的URL访问此路由。

无论如何,我可以根据配置的IP限制远程主机访问。 我想允许某些IP地址访问此URL。骆驼中是否有任何配置可用于处理此问题?

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

1 个答案:

答案 0 :(得分:1)

使用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中运行,则可以使用Spring Security IP过滤。另外请记住,如果您的应用程序位于负载均衡器的后面,则取决于负载均衡器,您可能总是会看到负载均衡器的地址,而不是原始调用者。