c# - 如何从 .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 本地使用时,它使用什么标题?
解决方案
推荐阅读
- shell - Kill:AIX 7.1 上的无效信号
- excel - 不知道为什么我得到变量未定义错误
- printf - lldb - Xcode 控制台与 macOS 终端上的 printf / nslog
- c# - 设置表格样式。C# - 关闭的 xml
- python - Andrew Ng 在 Keras 中的练习 4。
- ios - UICollectionView 分页视图被切断 - 分页不起作用
- c# - Windows 10 更新后 MAC 地址顺序更改
- java - 我找不到我首先从 JTextField 输入的值的原因
- javascript - 从 Summernote 中删除 Arial 和 Helvetica 字体
- reactjs - 如何从 react-router Switch 语句将道具传递给组件