在Apache Camel路由中调用受Bearer令牌身份验证保护的rest API

bq9c1y66  于 5个月前  发布在  Apache
关注(0)|答案(1)|浏览(85)

我需要从我的Apache Camel路由调用Rest API。Rest API使用可以在其他API上获得的令牌进行保护。
我的演示路线如下:

from("direct:iot")
        .id("iot")
        .setHeader(Exchange.HTTP_METHOD, constant("POST"))
        .setHeader(Exchange.CONTENT_TYPE, constant("application/x-www-form-urlencoded"))
        .setBody(simple(STR."username=\{USERNAME}&password=\{PASSWORD}&grant_type=password&client_id=iot-api-client&client_secret=\{CLIENT_SECRET}"))
        .to(TOKEN_URL)
        .unmarshal().json(JsonLibrary.Gson)
        .process(e -> {
            Map body = e.getIn().getBody(Map.class);
            e.getIn().setHeader("Authorization",
                STR."Bearer \{body.get("access_token")}");
        })
        .removeHeader("*")
        .setHeader(Exchange.HTTP_METHOD, constant("GET"))
        .to(STR."\{BASE_URL}\{RESOURCE_URI}")
        .log("${body}");

字符串
它可以工作,但对我来说似乎很复杂(我还应该添加一些错误处理,令牌缓存等)。我想知道它是否可以以某种方式简化。
APACHE CAMEL 4.2 WHAT'S NEW中,他们写道:
camel-http组件现在支持OAuth 2.0客户端身份验证。
不幸的是,我找不到任何细节。

w9apscun

w9apscun1#

你可以看到这个单元测试HttpOAuth2AuthenticationTest,还有一些文档,因为http组件上有新的oauth选项。

相关问题