首页 > 解决方案 > 如何从 .NET Core Web API 中的请求标头解析证书详细信息

问题描述

我创建了自定义中间件来解析对 Web Api 的每个请求

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")

我可以在哪里解析请求中的证书?特别是在视觉工作室本地?

问题: 证书标头默认X-ARR-ClientCert在 Azure Web 应用程序中。但是当我在 Visual Studio 本地使用时,它使用什么标题?

标签: c#asp.net-corecertificate

解决方案


推荐阅读