我为我的公司创建了一个Java工具,该工具正在使用Team Foundation Server的REST接口来访问工作项和测试运行。
对于几个GET,POST和PATCH请求,我正在使用com.google.api.client和google-http-client-jackson。
对于POST和PATCH请求,我使用的是基本授权以及个人访问令牌。对于GET-Request,我没有向我的请求发送任何其他标头。在jre8u191
之前,它一直工作良好。
但是由于jre8u201
,此功能不再起作用。我认为原因是此错误的修复:
https://bugs.java.com/bugdatabase/view_bug.do?bug_id=JDK-8211883
所以实际上我有两个问题。第一个问题是“变通办法”,以使我和我的同事快速重新运行我的工具。
基本上撤消了上述修复:我的应用程序如何再次显式启用匿名TLS握手?如何dd TLS匿名和NULL?我从java.security文件中的“ jdk.tls.disabledAlgorithms”中删除了它们。
我宁愿完全避免基本授权,而要使用更安全(更复杂)的NTLM之类的东西。我想使用一种方法,即用户不需要给出令牌或其他凭证的特殊输入。然后,我想对每种请求类型(也就是GET)使用此授权,这将使我的问题1过时。谁能帮我有关授权Java客户端的问题?
我发送GET请求的代码段如下:
HttpRequestFactory requestFactory = new ApacheHttpTransport().createRequestFactory();
HttpResponse response = request.execute();
// for POST and PATCH I added these two lines:
request.getHeaders().setBasicAuthentication("", token);
request.getHeaders().setContentType(contentType);`