Как разобрать детали сертификата из заголовка запроса в .NET Core Web API - PullRequest
0 голосов
/ 13 декабря 2018

Я создал собственное промежуточное ПО для анализа каждого запроса к 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, какой заголовок он использует?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...