我正在尝试使用HttpClientContext设置premptive Basic Authentication。我在下面描述的功能是利用JWT令牌和F5 / BigIP进行应用程序和服务身份验证和授权的更大解决方案的一部分。
使用成功的curl命令和网络跟踪,我可以看到以下工作流程:
我在Java代码中创建了一个客户端上下文,一切都很好,除了它总是使用原始的MRHSession cookie并且没有获取401上返回的新会话cookie值(即它发回原始会话cookie) #7中没有更新的#5),F5抱怨会话ID无效。
以下是我正在使用的http组件版本的gradle参考:
compile group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.3.4'
客户端上下文创建如下所示:
public HttpClientContext create(final URI uri) {
HttpHost httpHost = httpHostFactory.create(uri);
HttpClientContext context = HttpClientContext.create();
context.setAuthCache(authCacheFactory.create(httpHost));
context.setCredentialsProvider(credentialsProviderFactory.create(httpHost));
return context;
}