我们正在调用后端2个休息服务(A,B)(GET方法),这两个服务有不同的凭据(用户名和密码),但我们遇到了奇怪的行为:
1-如果我们首先呼叫A,认证成功,但如果我们呼叫B,我们将收到禁止(认证失败)
然后我们再次部署应用程序并执行以下方案:
2-首先呼叫B,认证成功,但如果我们呼叫A,我们将收到禁止(认证失败):
这是调用后端服务的示例代码:
HttpResponse<String> resp;
try {
resp = Unirest.get(url)
.basicAuth(username,password).asString();
String jsonstr = resp.getBody();
} catch (Exception e) {
e.printStackTrace();
throw e;
}
任何帮助?
答案 0 :(得分:0)
问题在于,HTTP客户端正在缓存JSESSIONID cookie。我已切换到此处找到的库的OpenUnirest 2.2.08+版本:https://github.com/OpenUnirest/unirest-java
现在我可以设置禁用cookie管理的选项,现在解决了我的基本身份验证缓存问题。
Options.enableCookieManagement(false);
有关详细信息,请参阅问题故障单:https://github.com/OpenUnirest/unirest-java/issues/30