我需要从我的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客户端身份验证。
不幸的是,我找不到任何细节。
1条答案
按热度按时间w9apscun1#
你可以看到这个单元测试
HttpOAuth2AuthenticationTest
,还有一些文档,因为http组件上有新的oauth选项。