我必须从我的spring启动应用程序调用一些其他的Web服务。我打算使用Camel配置流程和其他EIP用例。一些端点正在使用oAuth2身份验证。我打算使用Spring oAuthResttempalte。互联网上的所有示例都使用restlet,CXF或camel-http。
我无法找到只有spring resttemplate的单个例子。有没有人使用Spring Resttemplate实现Camel Rest消费者?
互联网上的一些示例使用jetty服务器来使用休息端点。为什么你需要一个码头服务器用于简单的休息消费者?
答案 0 :(得分:1)
有没有人使用Spring Resttemplate实现Camel Rest消费者?
我没有意识到这一点,并且不太可能在那个方向找到一些东西,因为Camel已经有consume rest endpoints的bult-in组件。
互联网上的一些示例使用jetty服务器来使用休息端点。为什么你需要一个码头服务器用于简单的休息消费者?
我认为码头被用作消费者而不是生产者终点。所以你不需要“服务器”。或者您可能看到一个使用jetty作为服务器来为OAuth端点提供服务的示例?
如果您原谅我的方法,我建议继续使用Camel HTTP / Rest功能来使用OAuth来使用REST API。我找到了this example on Gist:
from("direct:authService").tracing()
.setHeader(Exchange.HTTP_PATH)
.simple("<auth service context>/oauth2/token")
.setHeader("CamelHttpMethod")
.simple("POST")
.setHeader("Content-Type")
.simple("application/x-www-form-urlencoded")
.setHeader("Accept")
.simple("application/json")
.setBody()
.constant("grant_type=client_credentials&client_id=<client id>&client_secret=<client sec>")
.to("https4://<remote auth service url>")
.convertBodyTo(String.class)
.log("response from API: " + body())
.choice()
.when().simple("${header.CamelHttpResponseCode} == 200")
.unmarshal().json(JsonLibrary.Jackson, AccessResponseToken.class)
.setHeader("jwt").simple("${body.access_token}")
.to("direct:<some direct route>")
.otherwise()
.log("Not Authenticated!!!");
如果你想坚持OAuthRestTemplate
,你可以实施Processor
或bean来包装这些电话并返回你的路线授权令牌。