【发布时间】:2018-05-15 15:13:19
【问题描述】:
当使用旧 Spring 的 RestTemplate 与 OAuth 授权背后的某些 API 集成时,我正在做一些事情:
ClientCredentialsResourceDetails resourceDetails = new ClientCredentialsResourceDetails();resourceDetails.setClientId(oauthClientId);
resourceDetails.setClientSecret(oauthClientSecret);
resourceDetails.setAccessTokenUri(accessTokenUri);
// and we got the restTemplate:
OAuth2RestTemplate client = new OAuth2RestTemplate(resourceDetails);
然后 GET 如下:
client.getForEntity(restApiUri, MyEntity.class);
但它正在阻塞:(
作为一种解决方法,我使用 Mono.fromCallable(...) 包装了旧的 RestTempate。我还尝试使用 WebClient 做一些自定义客户端,它接受令牌并授权用户,然后对 RestApi 进行第二次调用。但这并不方便,因为令牌可能会过期,我必须实施更新过程。 OAuth 中可能还有更多我不知道的陷阱。
我如何使用 Spring web-flux 和 WebClient 以及 Mono/Flux 反应对象来做到这一点?
【问题讨论】:
标签: java spring spring-security oauth-2.0 spring-webflux