Я создал собственное промежуточное ПО для анализа каждого запроса к Web Api
Вот мой метод Invoke в middleware
классе
public async Task Invoke(HttpContext context)
{
if (!context.Request.Headers.Keys.Contains("X-ARR-ClientCert"))
{
context.Response.StatusCode = 400; //Bad Request
await context.Response.WriteAsync("Certificate header is missing");
return;
}
await _next.Invoke(context);
}
Вот мой код клиента
string certFile = Console.ReadLine();//certificate path
string certPassword = Console.ReadLine();//password
string url = "xxxxxxxxxxxxxxx"; //service end point
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.ClientCertificates.Add(GetCertFromFile(certFile,certPassword));
HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
using (var readStream = new StreamReader(resp.GetResponseStream()))
{
Console.WriteLine(readStream.ReadToEnd());
}
Но нижняя строка возвращает false, потому что она не содержит X-ARR-ClientCert
context.Request.Headers.Keys.Contains("X-ARR-ClientCert")
Где я могу проанализировать сертификаты в запросе?специально для Visual Studio?
Вопросы: В заголовке сертификата по умолчанию X-ARR-ClientCert
в Azure Web Apps.Но когда я использую локально в visual studio, какой заголовок он использует?