c ++ - Integreret Windows Authentication Wininet

Indlæg af Hanne Mølgaard Plasc

Problem



Hej eksperter
Jeg skal sende en http-anmodning fra C ++-applikation ved hjælp af wininet API.
Brugeren står bag ISA-proxyserveren, der er konfigureret til at bruge integreret Windows-godkendelse.
Når jeg får fejl 407 (kræves proxy-godkendelse) bruger jeg InternetErrorDlg til at bede brugeren om legitimationsoplysninger. Dette er ikke en ideel løsning, da IE er i stand til at bruge nuværende brugerens referencer transparente. Er der en måde at gøre dette på?


Prøvekode for anmodning


hRequest = HttpOpenRequest ( 
    hConnect, 
    "POST", 
    query.c\_str(), 
    HTTP\_VERSION, 
    NULL, 
    cAcceptTypes, 
    INTERNET\_FLAG\_RELOAD | INTERNET\_FLAG\_NO\_CACHE\_WRITE| INTERNET\_FLAG\_KEEP\_CONNECTION,
    0);

bRet = HttpSendRequest(
                hRequest,
                NULL,
                0,
                (LPVOID)dataXml.c\_str(),
                (DWORD)dataXml.length());

bRet = HttpQueryInfo(
                hRequest,
                HTTP\_QUERY\_FLAG\_NUMBER | HTTP\_QUERY\_STATUS\_CODE,
                &dwStatus,
                &dwSize,
                NULL);


if (dwStatus == HTTP\_STATUS\_PROXY\_AUTH\_REQ)
{

    ProxyAuthenticate( hRequest );  // Here I call InternetErrorDlg
            bRet = HttpSendRequest(
                hRequest,
                NULL,
                0,
                (LPVOID)dataXml.c\_str(),
                (DWORD)dataXml.length());


}

Bedste reference


Prøv at bruge INTERNET\_OPEN\_TYPE\_PRECONFIG for at initialisere Wininet i din proces:


InternetOpen(clientName, INTERNET\_OPEN\_TYPE\_PRECONFIG, NULL, NULL, 0);