Spring Traverson和OAuth2RestTemplate

时间:2019-10-11 13:00:24

标签: spring hateoas oauth2resttemplate

我有一个OAuth2RestTemplate来处理与REST-API的通信,只是尝试将其与Traverson结合使用,就像这样:

@Bean
public Traverson traverson( final OAuth2RestTemplate restTemplate ) {
   try {
      final Traverson traverson = new Traverson( new URI( this.baseUrl ), MediaType.APPLICATION_JSON );
      traverson.setRestOperations( restTemplate );
      return traverson;
   }
   catch ( final URISyntaxException e ) {
      throw new BeanCreationException( e );
   }
}

现在尝试使用traverson时,模板可以很好地处理OAuth2舞蹈,获取令牌和所有令牌-不幸的是,{{1}不会发送标头Authorization: Bearer ... }。

所以当我现在呼叫一个端点时,例如traverson的结果只是REST API提供程序的登录形式:-(

我的问题: 我是否缺少某些东西?或者我的“带有Traverson的OAuth2RestTemplate”方法根本不被支持,或者traverson.follow( "xyz" )...打算以这种方式使用?

任何帮助表示赞赏!目前,我只能说这是不可能的,但是在这个“春季世界”中,大多数时间都有 方法来完成它-也许你们当中的一个人知道怎么做!

1 个答案:

答案 0 :(得分:0)

我认为您需要设置Traverson中预定义的HAL消息转换器。

restTemplate.setMessageConverters(Traverson.getDefaultMessageConverters(mediaTypes));

在我的情况下,我使用Traverson的扩展来成功使用OAuth2 RestTemplate。

public class ExtendedTraverson extends Traverson {

  public ExtendedTraverson(URI baseUri, RestTemplate restTemplate, List<MediaType> mediaTypes) {
    super(baseUri, mediaTypes);
    restTemplate.setMessageConverters(getDefaultMessageConverters(mediaTypes));
    setRestOperations(restTemplate);
  }

}
相关问题