NTLM Auth в WinHTTP

У меня есть несколько проблем с проверкой подлинности NTLM с использованием WinHTTP. Наблюдая за трафиком в Wireshark, я вижу, как выполняется запрос, но клиент никогда не отправляет заголовки аутентификации, необходимые, поэтому каждый раз, когда сервер отвечает сообщением о необходимости аутентификации 401.

Я не поддерживаю ни одного прокси-сервера с прямым IP-подключением к хосту, так что это не должно быть проблемой.

Вот мой код: и помощь будет принята с благодарностью.

hSession = WinHttpOpen(L"Connection/1.0",
WINHTTP_ACCESS_TYPE_DEFAULT_PROXY, WINHTTP_NO_PROXY_NAME, WINHTTP_NO_PROXY_BYPASS, 0);

hConnect = WinHttpConnect(hSession, L"connect", INTERNET_DEFAULT_HTTP_PORT, 0);
hRequest = WinHttpOpenRequest(hConnect, L"GET", url, NULL, WINHTTP_NO_REFERER, WINHTTP_DEFAULT_ACCEPT_TYPES, NULL);WinHttpSetOption (hRequest, WINHTTP_OPTION_AUTOLOGON_POLICY, 0, 0);

int i = 0;

while(!bDone)
{
i++;
WinHttpSetCredentials(hRequest, WINHTTP_AUTH_TARGET_SERVER, WINHTTP_AUTH_SCHEME_NTLM, NULL, NULL, NULL);

//Send the request
bResults = WinHttpSendRequest(hRequest, WINHTTP_NO_ADDITIONAL_HEADERS, 0, WINHTTP_NO_REQUEST_DATA, 0, 0, 0);

//End the request
if(bResults)
bResults = WinHttpReceiveResponse(hRequest, NULL);

if( bResults )
bResults = WinHttpQueryHeaders(hRequest, WINHTTP_QUERY_STATUS_CODE | WINHTTP_QUERY_FLAG_NUMBER, NULL, &dwStatusCode, &dwSize, NULL );if(bResults)
{
switch(dwStatusCode)
{
case 401:
//Requres auth
newFile << "401 Auth Required\n";
WinHttpSetCredentials(hRequest, WINHTTP_AUTH_TARGET_SERVER, WINHTTP_AUTH_SCHEME_NTLM, NULL, NULL, NULL);
break;

default:
newFile << dwStatusCode << " unknown\n";
break;
}
}if(i >= 30)
bDone = TRUE;
}

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]