在没有 ProxyServer 的情况下使用 OkHttpClient 进行抢占式身份验证

Preemptive authentication with OkHttpClient without ProxyServer

根据 https://square.github.io/okhttp/3.x/okhttp/ ,我认为只有在我们有代理服务器的情况下才能进行抢占式身份验证。

我们有一台 resource/origin 服务器使用 Oauth 令牌授权客户端。

我们实现了授权OkHttp Authenticator https://square.github.io/okhttp/3.x/okhttp/okhttp3/Authenticator.html。但是,客户端总是在没有授权headers的情况下进行请求,然后添加。我们可以使用身份验证器并仍然在单个请求中向我们的资源服务器提供授权 header 吗?我们可以预测挑战。但是,不确定是否可以避免未经授权对服务器的请求 headers.

我们可以使用拦截器抢先添加headers。

是否可以在没有代理服务器的情况下使用 Authenticator 并抢先添加 header?

您可以使用拦截器来实现抢占式身份验证。这为您提供了充分的灵活性。

你是对的,纯粹使用Authenticator,同时总是响应失败的401。

因此,像 okhttp-digest 这样的库会缓存身份验证方法以抢先实施。

https://github.com/rburgst/okhttp-digest/blob/master/src/main/java/com/burgstaller/okhttp/AuthenticationCacheInterceptor.java