gpt4 book ai didi

c# - 系统.Net.WebException : The remote server returned an error: (403) Forbidden

转载 作者:太空宇宙 更新时间:2023-11-03 14:28:09 25 4
gpt4 key购买 nike

我有一个 WCF 服务,需要使用证书进行客户端身份验证。

我有一个使用此 WCF 的简单控制台应用程序。

我有 2 个客户端证书,第一个控制台应用程序运行完美,第二个返回此错误:

System.ServiceModel.Security.MessageSecurityException: The HTTP request was forbidden with client authentication scheme 'Anonymous'. ---> System.Net.WebException: The remote server returned an error: (403) Forbidden.

正如我在 IIS 日志中看到的那样,是 403.7。

这两个证书都安装在同一存储区,并且在执行控制台应用程序的用户的管理私钥中具有相同的权限。

两个证书都有:

  • 私钥
  • key 使用:数字签名、不可否认性、 key 加密、数据加密 (f0)
  • 增强型 key 使用:客户端身份验证 (1.3.6.1.5.5.7.3.2)
  • 有效并且具有相同的认证路径

有什么想法吗?

更新

如果我激活 SCHANNEL 日志记录,当我使用失败的证书时,我们会在事件查看器上看到此错误:

**enter image description here**

已解决

问题是我们使用以下方式获取证书:

X509FindType.FindBySubjectName

对于我们正在使用的主题,至少还有另外 3 个包含该主题的证书。

那么我们拿到的证书不对,我们改代码使用

X509FindType.FindBySubjectDistinguishedName或者X509FindType.FindByThumbprint

现在获得正确的客户端证书并开始工作。

最佳答案

这取决于服务器证书验证模式。 enter image description here例如,当我们使用 CertificationValidationMode=Custom 时,我们可以指定实现

的自定义 X509validator 类
System.IdentityModel.Selectors.X509CertificateValidator

它可以在处理客户端证书时进行自定义验证。
如果CertificateionValidationMode=ChainTrust,您必须确保客户端存储在正确的存储区域,并且与服务器证书在同一个链中。什么是服务器证书验证模式?
如果有什么我可以帮忙的,请随时与我联系。

关于c# - 系统.Net.WebException : The remote server returned an error: (403) Forbidden,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55101812/

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