提问人:Santa Paws 提问时间:8/4/2023 更新时间:8/4/2023 访问量:251
WCF 服务参考 客户端身份验证方案“匿名”禁止 HTTP 请求
WCF Service Reference The HTTP request was forbidden with client authentication scheme 'Anonymous'
问:
在我的 Visual Studio 2015 Web 应用程序项目 (C#) 中,我尝试添加 WCF 服务引用 https://eldws.fmcsa.dot.gov,并收到如下错误:
There was an error downloading 'https://eldws.fmcsa.dot.gov/$metadata'. The request failed with HTTP status 404: Not Found. Metadata contains a reference that cannot be resolved: 'https://eldws.fmcsa.dot.gov/'. The HTTP request was forbidden with client authentication scheme 'Anonymous'. The remote server returned an error: (403) Forbidden.
如果我直接在浏览器中输入此 URL,我首先会收到警告消息
当我单击列出的凭据时,浏览器成功显示 WSDL 内容。 我的项目设置是启用匿名身份验证。SSL Enabled 为 true,Windows 身份验证为 Disabled。将“匿名身份验证”更改为“已禁用”,将“Windows 身份验证”更改为“已启用”并不能解决问题。我还验证了我在个人证书中安装了 IIS Express 开发证书。
由于没有某种证书,似乎在Visual Studio中添加服务引用被服务器拒绝。如何将 VS 配置为在添加 WCF 服务引用时具有服务器所需的证书或身份验证?
在 VS 中更改项目配置以启用/禁用匿名身份验证/Windows 身份验证无济于事。我对服务器的设置一无所知。我确实有来自服务器的公钥,但据我所知,它仅在与服务器交换信息时使用,而不是在仅引用服务时使用。由于我正在添加新的服务引用,因此在 web.config 中尚无需配置任何内容。
答:
客户端身份验证方案禁止 HTTP 请求 “匿名”。远程服务器返回错误:(403) 禁止访问。
此错误通常表示 WCF 服务器使用证书对客户端进行身份验证。您可以在服务器中添加它,如下所示:
binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Certificate;
使用证书对客户端进行身份验证的部分,您可以参考以下链接了解详细信息。https://learn.microsoft.com/en-us/dotnet/framework/wcf/feature-details/transport-security-with-certificate-authentication
评论