2

我目前正在尝试使用 IIS/6.0 数据服务器进行身份验证。使用下面的代码,我如何从服务器检索挑战。目前我正在做的是将第一个 GET 请求发送到服务器

//Part 1: The Request
    pw.println("GET /dashboard/ HTTP/1.1");
    pw.println("Host: MyServer.net");
    pw.println("User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:39.0) Gecko/20100101 Firefox/39.0");
    pw.println("Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
    pw.println("Accept-Language: en-US,en;q=0.5");
    pw.println("Accept-Encoding: gzip, deflate");
    pw.println("Connection: keep-alive");
    pw.println("WWW-Authenticate: Negotiate");
    pw.println();
    pw.flush();

//Part 1: The Response
    HTTP/1.1 401 Unauthorized
    Content-Length: 1656
    Content-Type: text/html
    Server: Microsoft-IIS/6.0
    WWW-Authenticate: Negotiate
    WWW-Authenticate: NTLM
    X-Powered-By: ASP.NET
    Date: Mon, 14 Sep 2015 19:28:16 GMT

然后我发送下一个请求

//Part 2: The Request
    pw.println("GET /dashboard/ HTTP/1.1");
    pw.println("Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
    pw.println("Referer: http://MyServer.net/dashboard/");
    pw.println("Accept-Language: en-US,en;q=0.5");
    pw.println("User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:39.0) Gecko/20100101 Firefox/39.0");
    pw.println("Accept-Encoding: gzip, deflate");
    pw.println("Host: MyServer.net");
    pw.println("Connection: keep-alive");
    pw.println("Authorization: Negotiate");
    pw.println();
    pw.flush();

//Part 2: The Response
    HTTP/1.1 401 Unauthorized
    Content-Length: 1539
    Content-Type: text/html
    Server: Microsoft-IIS/6.0
    WWW-Authenticate: Negotiate YF0GBisGAQUFAqBTMFGgMDAuBgkqhkiC9xIBAgIGCSqGSIb3EgECAgYKKoZIhvcSAQICAwYKKwYBBAGCNwICCqMdMBugGRsXcGFlbXMxOTYkQFNUQVJCVUNLUy5ORVQ=
    X-Powered-By: ASP.NET
    Date: Mon, 14 Sep 2015 19:28:16 GMT

我认为我在这里做错了两件事。

  1. WWW-Authenticate Header 字段在“第 2 部分:响应”中似乎是错误的,我认为这是因为我没有使用 NTLM(这是我想要使用的)
  2. 还没有发送我的 Active Directory 凭据。我不知道接下来我需要做什么。

目前,我发现了一个非常有用的文档Responding to the Challenge,它有助于解释如何对 Active Directory 凭据进行编码

我需要采取哪些步骤才能完全通过服务器进行身份验证,以便我可以从中轮询数据?

4

0 回答 0