gpt4 book ai didi

c# - 服务器不接受在 HttpClientHandler 上设置的证书

转载 作者:太空宇宙 更新时间:2023-11-03 13:27:26 24 4
gpt4 key购买 nike

场景如下:用户使用证书身份验证连接到网络服务器,服务器正在调用其他服务,我想转发/发送我在服务器上收到的证书以通过服务对用户进行身份验证。

我在网络服务器上使用以下代码在 HttpClientHandler 上设置客户端证书,我可以在 Debug模式下看到客户端证书在下面的 HttpContext 中有效。

X509Certificate2 cert = new X509Certificate2(HttpContext.Request.ClientCertificate.Certificate);

var httpClientHandler = new WebRequestHandler();
httpClientHandler.UseDefaultCredentials = true;
httpClientHandler.PreAuthenticate = true;
httpClientHandler.ClientCertificateOptions = ClientCertificateOption.Manual;
httpClientHandler.ClientCertificates.Add(cert);

当我在服务代码中收到请求时,证书已被剥离(或者可能是上面的代码从未发送过)。上面的代码发生了什么以及应该有什么不同?

仅供引用,网络服务器和服务都在同一台机器上运行。更准确地说,这些服务在 IIS 上的同一网站内作为应用程序运行

最佳答案

在您的场景中,您网站的客户将不是您服务的客户;相反,您的网站将成为您服务的客户。正如您所说,“[网络] 服务器 [(即站点)] 正在调用其他服务”。

您网站发出的服务请求将有自己的上下文,这与发送到您网站的触发它们的请求不同。

我怀疑您是否想在您网站的相应服务请求中重用来自对您网站的请求的客户端证书;听起来您只希望您的站点调用您的服务。但是,如果这样做,您可以为客户端证书身份验证设置您的服务(例如 a related SO question 表示使用 WCF 服务执行此操作),从对您站点的每个请求获取客户端证书,然后在每个相关请求中使用它您的网站发送给您的服务。

关于c# - 服务器不接受在 HttpClientHandler 上设置的证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22917651/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com