如何解决HTTP 请求未经授权...错误
我在 2016 年的服务器上管理了几个 iis 10
开发人员正在对其中一台 iis 服务器上的 IIS 上托管的 WCF 服务执行 POST
他收到以下错误。
当我使用 IE 浏览器执行一个简单的请求(在 IE 中粘贴 url)时,我成功获取了应用程序的 wsdl 页面
iis 认证设置为匿名,windows 认证(1.negotiate,2.NTLM)
当我删除匿名身份验证时,当我尝试从 IE 访问 url 时收到凭据提示。
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: 目标主体名称不正确...
非常感谢您的帮助
解决方法
如果使用windows身份验证,客户端调用服务器时需要提供windows凭据:
Service1Client service1Client = new Service1Client();
service1Client.ClientCredentials.Windows.ClientCredential.UserName = "Administrator";
service1Client.ClientCredentials.Windows.ClientCredential.Password = "Password";
如果客户端没有提供windows凭据,会报错:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。