Depois que uma solicitação WinHTTP recebe 407, use WinHttpQueryAuthSchemes para inspecionar os métodos oferecidos e escolher um compatível com o cliente e a conta. Defina as credenciais nessa solicitação:

WinHttpSetCredentials(
    requestHandle,
    WINHTTP_AUTH_TARGET_PROXY,
    selectedScheme,
    proxyUser,
    proxyPassword,
    nullptr);

O último argumento reservado deve ser null. Verifique o resultado booleano e, em caso de falha, GetLastError. Sucesso significa que a API aceitou a configuração, não que o proxy aceitou o login.

Reenvie por meio de um fluxo de autenticação controlado e inspecione a resposta. Limite as novas tentativas; um fluxo de corpo de solicitação já consumido deve poder ser reproduzido se a operação for repetida. Um 401 do destino usa WINHTTP_AUTH_TARGET_SERVER, diferente deste alvo de proxy.

Essas credenciais valem para uma única solicitação. O WinHTTP não as transforma em um armazenamento geral de credenciais para solicitações posteriores. Conexões autenticadas reutilizadas podem ocultar temporariamente outro desafio, então o aplicativo ainda deve tratar desafios futuros.

Mantenha a seleção de proxy separada. Uma cadeia de endereço com credenciais não substitui esta API de handle de solicitação, assim como alcançar o endpoint com sucesso não conclui a autenticação.

Artigos relacionados