HTTP 状态 403:使用证书验证 ASP.NET Web 服务的禁止异常

2024-01-12

我几天前发布了有关网络服务访问控制的文章(Web 服务的访问控制 https://stackoverflow.com/questions/390853/access-control-to-web-service)。简而言之,我部署了一个 ASP.NET Web 服务//服务/网络服务我希望我的 ASP.NET Web 应用程序 (app1) 位于//web1通过证书身份验证访问 Web 服务。我不断得到System.Net.WebException:请求失败,HTTP 状态 403:禁止例外。以下是我的设置:

关于证书导出;

  • 我导出了颁发给的服务器证书//服务来自 LocalMachine 商店并将其另存为 service.cer。
  • 我还导出了颁发给的客户端证书//web1来自 LocalMachine 商店并将其另存为 web1.cer

设置为//服务/网络服务:

  • 在目录安全性上,取消选中匿名访问和所有身份验证访问(集成 Windows 访问、摘要式身份验证和基本身份验证)。
  • 在安全通信上,选中所需安全通道 (SSL)、需要 128 位加密、需要客户端证书和启用客户端证书映射。然后我将 web1.cer 映射到 AD 帐户我的域/用户有权访问//服务/网络服务
  • For //服务/webservice/WebService.asmx, set <authentication mode="Windows" />在 web.config 上

设置为//网站1/应用程序1

  • Set <authentication mode="Windows" /> and <identity impersonate="true" />在 web.config 上
  • 在VS2008中,我添加了网络引用//服务/webservice/WebService.asmx并将其命名为WService
  • In //web1/app1/default.aspx.cs,我有这个:
using System.Security.Cryptography.X509Certificates;
    using System.Net;
        WService.WebService ws = new WService.WebService();
        ServicePointManager.ServerCertificateValidationCallback = delegate(Object sender1, X509Certificate cert, X509Chain chain, System.Net.Security.SslPolicyErrors errors) { return true; };
//I was a bit confused here on which certificate I should use so I have tried both service.cer and web1.cer but still got the same error
        X509Certificate x509 = X509Certificate.CreateFromCertFile(@"C:\Certificates\service.cer"); 
        ws.ClientCertificates.Add(x509);
        ws.DoSomething();
  • 我运行 WinHttpCertCfg.exe 来授予 ASPNET 帐户对 LocalMachine 中两个证书的访问权限

我去了https://service/webservice/WebService.asmx https://service/webservice/WebService.asmx并被提示提供客户端证书,之后我就完成了。但如果我去https://web1/app1/default.aspx https://web1/app1/default.aspx(这将调用 Web 服务)并且我会收到 HTTP 状态 403 异常。

我错过了什么?我认为问题是因为//web1/app1/default.aspx.cs无法传输证书。如果这是问题所在,我该怎么办?我在 VS 2008 和 ASP.NET 3.5 上构建了 asmx 和 aspx。


确保您的客户端证书被请求作为“客户端身份验证”的“计算机”模板证书,否则它将无法工作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HTTP 状态 403:使用证书验证 ASP.NET Web 服务的禁止异常 的相关文章

随机推荐