У меня есть клиент oauth2, который успешно получает токен с сервера авторизации.(это не всегда так, но теперь это так ...:))
Клиент, шлюз zuul и сервер ресурсов зарегистрированы в Eureka.
Мой клиент использует проксидля доступа к службе удаленных ресурсов с именем microservice-files.
@RestController
@FeignClient(name = "zuul-server")
@RibbonClient(name = "microservice-files")
public interface ProxyMicroserviceFiles {
@GetMapping(value = "microservice-files/root")
FileBean getUserRoot();
}
Поэтому я хотел бы передать токен Zull, а затем серверу ресурсов.
Я могу ретранслировать токентаким образом можно связаться с Zuul и, очевидно, балансировка нагрузки также управляется (я только что проверил, я не знал, и это здорово) также zuul может передавать токен, но это не очень удобно, я предпочел бы предыдущий подход.
@EnableConfigurationProperties
@SpringBootApplication
@EnableFeignClients("com.clientui")
public class ClientUiApplication {
@Bean
public OAuth2RestOperations restOperations(
OAuth2ProtectedResourceDetails resource,
OAuth2ClientContext context) {
return new OAuth2RestTemplate(resource, context);
}
public static void main(String[] args) {
SpringApplication.run(ClientUiApplication.class, args);
}
}
вот тестовый контроллер
@Controller
public class ClientController {
@Autowired
private RestOperations restOperations;
@RequestMapping("/root")
public ResponseEntity userRootTest() {
String rootUrl = "http://localhost:9004/microservice-files/root";
return restOperations.getForEntity(rootUrl,FileBean.class);
}
}