I have created custom middleware to parse every request to Web Api
Here is my Invoke method in a middleware
class
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);
}
Here is my client code
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());
}
But, below line returns false, because it do not contain X-ARR-ClientCert
context.Request.Headers.Keys.Contains("X-ARR-ClientCert")
Where I can parse certificates in request ? specially locally in visual studio?
Questions:
Certificate header defaults to X-ARR-ClientCert
in Azure Web Apps. But when I use locally in visual studio what header does it use?