Я получаю исключение 403 Forbidden при доступе к простому azure webapi с аутентификацией по сертификату, только при доступе из asp. net веб-приложения. Я использую унаследованный объект WebClient для переопределения GetWebRequest для добавления сертификата клиента.
public class CertificateWebClient : WebClient
{
private readonly X509Certificate2 certificate;
public CertificateWebClient(X509Certificate2 cert)
{
certificate = cert;
}
protected override WebRequest GetWebRequest(Uri address)
{
HttpWebRequest request = (HttpWebRequest)base.GetWebRequest(address);
request.ClientCertificates.Add(certificate);
return request;
}
}
И я использую функцию CertificateWebClient DownloadString для доступа к веб-API.
X509Certificate2 newCertificate = new X509Certificate2("bytearray");
CertificateWebClient webClient = new CertificateWebClient(newCertificate)
{
Proxy = new WebProxy("proxy address")
};
var result = webClient.DownloadString("https://webapiaddress/api/Values");
Я получаю доступ веб-API аналогичным образом в windows формы, и он работает абсолютно нормально.