我构建一个客户端,基本上需要从需要身份验证的端点发送和检索文件InputStream
(必须是)。
我正在使用Apache HttpClient
创建Bearer
AuthScheme
我使用特定的令牌来处理我们自己的令牌检索流程, :
@Override
public String getToken(Credentials credentials, HttpRequest request, HttpContext context) {
return tokenProvider.getToken(getParameters(),
request.getRequestLine().getMethod(),
request.getRequestLine().getUri());
}
预计TokenProvider
会自行提出从第三方服务中获取令牌的请求。
现在,我使用InputStreamEntity
创建我的请求,这是不可重复的,因此第二次请求结束时会失败,流程为:
AuthSchem
根据质询检索所需的令牌NonRepeatableRequestException
我知道我可以使用Repeatable
实体并完成它但我们可能会讨论非常(非常)大的文件,我不能简单地将它们缓冲到内存中。
我还尝试使用HttpRequestInterceptor
抢先执行第一个请求并根据它获得的挑战填充令牌缓存但是在我看来这是一个非常难看的流程,同时根据挑战检索令牌目前的要求即将到来。
我也尝试过使用Jets3t' RepeatableRequestEntity
这样做但我不想在不需要的地方包含依赖项,而且我还没有彻底测试它的性能。
所以我的问题是:其他人怎么做到这一点?它不仅限于Bearer
身份验证 - 您如何处理通过需要基于质询的身份验证的线路发送InputStream
?