HTTP 请求未经授权...错误

时间:2021-02-09 07:25:50

标签: wcf wsdl

我在 2016 年的服务器上管理了几个 iis 10

开发人员正在对其中一台 iis 服务器上的 IIS 上托管的 WCF 服务执行 POST

他收到以下错误。

当我使用 IE 浏览器执行一个简单的请求(在 IE 中粘贴 url)时,我成功获取了应用程序的 wsdl 页面

iis 认证设置为匿名,windows 认证(1.negotiate, 2.NTLM)

当我删除匿名身份验证时,当我尝试从 IE 访问 url 时收到凭据提示。

IIS Authentication

<块引用>

setspn -l SERVER00

注册的服务主体名称 CN=SERVER00,OU=Corporate Policy,OU=Prod Servers,OU=Servers,DC=domain,DC=com WSMAN/SERVER00.domain.com WSMAN/SERVER00 条款RV/SERVER00 TERMSRV/SERVER00.domain.com 受限KrbHost/SERVER00 主机/服务器00 RestrictedKrbHost/SERVER00.domain.com HOST/SERVER00.domain.com

错误信息:

System.ServiceModel.Security.MessageSecurityException:HTTP 请求未经授权,客户端身份验证方案为“协商”。从服务器收到的身份验证标头是 'Negotiate oW0wa6ADCgEBomQEYmBgBgkqhkiG9xIBAgIDAH5RME+gAwIBBaEDAgEepBEYDzIwMjEwMjA3MDg1NjQ3WqUFAgMJ/eSmAwIBKakkVMGwpBgZFocuTwcYcBSUcuTwcYmBgZFocuTwcYcYcGwcYcAwcKakkvgwpBSUcuTwc ---> System.Net.WebException:远程服务器返回错误:(401) 未经授权。 ---> System.ComponentModel.Win32Exception: 目标主体名称不正确...

非常感谢您的帮助

1 个答案:

答案 0 :(得分:0)

如果使用windows身份验证,客户端调用服务器时需要提供windows凭据:

Service1Client service1Client = new Service1Client();
 service1Client.ClientCredentials.Windows.ClientCredential.UserName = "Administrator";
 service1Client.ClientCredentials.Windows.ClientCredential.Password = "Password";

如果客户端没有提供windows凭据,会报错:

enter image description here