摘要式身份验证java.net.http.HttpClient

unhi4e5o  于 2022-12-25  发布在  Java
关注(0)|答案(1)|浏览(196)

我正在尝试连接一个受摘要认证保护的网站。如果我尝试通过Insomnia或Firefox登录,我的凭据工作正常,但我无法让它在Java 17中工作(Insomnia的自动生成代码也不工作)。
我尝试遵循并理解以下教程/文档:
https://www.baeldung.com/java-9-http-client
https://docs.oracle.com/javase/7/docs/technotes/guides/net/http-auth.html
据我所知,两人都提到支持《文摘》。
当摘要验证失败时,我得到的结果总是状态代码401 &预期的报头:
www-authenticate=[摘要领域=“api领域”,qop=“身份验证”,随机数=“NONCE==”
以下是当前代码。方法 getPasswordAuthentication 未执行:

public void checkIsAPIRunning() {

    HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create("https://the-site-I-try-to-connect-with:443/api/function"))
            .method("GET", HttpRequest.BodyPublishers.noBody()).build();
    HttpResponse<String> response = null;
    try {
        response = HttpClient.newBuilder().authenticator(new Authenticator() {
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication("user", "pass".toCharArray());
            }
        }).build().send(request, BodyHandlers.ofString());          
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}

我是不是误解了这些文件?我希望得到任何帮助或指点:)

t40tm48m

t40tm48m1#

新的HttpClient不直接支持摘要式身份验证-请参阅此处:https://bugs.openjdk.org/browse/JDK-8285888
看起来,您应该自己处理身份验证过程。

相关问题