Care credențiale .NET aparțin proxy-ului?
Distingi WebProxy.Credentials, credențialele serverului destinație și DefaultProxyCredentials la autentificarea unui proxy HTTP.
Pentru un WebProxy personalizat, pune contul proxy-ului pe acel obiect. Alte proprietăți de credențiale .NET au destinatari diferiți:
| Proprietate | Destinatar |
|---|---|
WebProxy.Credentials | Proxy-ul reprezentat de acel obiect. |
HttpClientHandler.Credentials | Serverul de destinație. |
DefaultProxyCredentials | Proxy-ul implicit al sistemului când Proxy este null și UseProxy este true. |
Acest exemplu .NET 10 oferă un proxy explicit și contul său propriu:
using System;
using System.Net;
using System.Net.Http;
string password = Environment.GetEnvironmentVariable("PROXY_PASSWORD")
?? throw new InvalidOperationException("Set PROXY_PASSWORD");
var proxy = new WebProxy("http://203.0.113.10:8080")
{
Credentials = new NetworkCredential("proxy-user", password)
};
using var handler = new HttpClientHandler
{
Proxy = proxy,
UseProxy = true
};
using var client = new HttpClient(handler)
{
Timeout = TimeSpan.FromSeconds(15)
};
using var response = await client.GetAsync("https://example.com/");
Console.WriteLine((int)response.StatusCode);
Înlocuiește punctul de documentație și folosește un cont furnizat de operator. O intrare de listă fără autentificare nu are nevoie de login inventat. Deoarece Proxy al handlerului este atribuit explicit, DefaultProxyCredentials nu înlocuiește WebProxy.Credentials.
UseDefaultCredentials are și el domeniu specific obiectului: autentificarea de server a handlerului și autentificarea proxy a unui WebProxy sunt diferite. Trimiterea contului utilizatorului procesului nu este un răspuns generic la 407.
Dacă provocarea de autentificare persistă, verifică schema reală, punctul selectat și instanța client/handler. Autentificarea proxy poate preceda TLS-ul destinației, deci un antet Authorization al site-ului nu îi poate răspunde. Autentificarea acceptată depinde în continuare de handler, platformă, serviciu și politica de implementare; nu este necesară modificarea globală a proxy-ului Windows.