Я пытаюсь реализовать Feign Clients, чтобы получить информацию о пользователе из сервиса пользователя, в настоящее время я запрашиваю с oAuth2RestTemplate, он работает. Но теперь я хочу перейти на Feign, но я получаю код ошибки 401, вероятно, потому, что он не несет токены пользователя, поэтому есть способ настроить, если Spring Support для Feign использует RestTemplate, поэтому я могу использовать мой собственный Бин?Spring Cloud Feign with OAuth2RestTemplate
Сегодня я реализую таким образом
Службы клиента
@Retryable({RestClientException.class, TimeoutException.class, InterruptedException.class})
@HystrixCommand(fallbackMethod = "getFallback")
public Promise<ResponseEntity<UserProtos.User>> get() {
logger.debug("Requiring discovery of user");
Promise<ResponseEntity<UserProtos.User>> promise = Broadcaster.<ResponseEntity<UserProtos.User>>create(reactorEnv, DISPATCHER)
.observe(Promises::success)
.observeError(Exception.class, (o, e) -> Promises.error(reactorEnv, ERROR_DISPATCHER, e))
.filter(entity -> entity.getStatusCode().is2xxSuccessful())
.next();
promise.onNext(this.client.getUserInfo());
return promise;
}
И клиентские
@FeignClient("account")
public interface UserInfoClient {
@RequestMapping(value = "/uaa/user",consumes = MediaTypes.PROTOBUF,method = RequestMethod.GET)
ResponseEntity<UserProtos.User> getUserInfo();
}
Благодаря @ Dave, создавая боб 'RequestInterceptor' и установив маркер однонаправленного от oauth на обработанном заголовке RequestTemplate –
Отлично. Может быть, вы могли бы внести свой вклад в весеннюю облачную безопасность? –
Да, конечно, я подниму билет на GitHub, поэтому мы можем обсудить его там. –