HTTP 请求未经授权...错误
Posted
技术标签:
【中文标题】HTTP 请求未经授权...错误【英文标题】:The HTTP request is unauthorized... Error 【发布时间】:2021-05-12 19:49:09 【问题描述】:我在 2016 年的服务器上管理多个 iis 10
开发人员正在对托管在其中一台 iis 服务器上的 IIS 上的 WCF 服务执行 POST
他收到以下错误。
当我使用 IE 浏览器执行一个简单的请求(在 IE 中粘贴 url)时,我成功获取了应用程序的 wsdl 页面
iis 身份验证设置为匿名,windows 身份验证(1.negotiate, 2.NTLM)
当我删除匿名身份验证时,我在尝试从 IE 访问 URL 时收到凭据提示。
setspn -l SERVER00
注册的 ServicePrincipalNames 为 CN=SERVER00,OU=Corporate Policy,OU=Prod Servers,OU=Servers,DC=domain,DC=com WSMAN/SERVER00.domain.com WSMAN/SERVER00 TERMSRV/SERVER00 TERMSRV/SERVER00.domain.com RestrictedKrbHost/SERVER00 主机/服务器00 RestrictedKrbHost/SERVER00.domain.com HOST/SERVER00.domain.com
错误信息:
System.ServiceModel.Security.MessageSecurityException:HTTP 请求未通过客户端身份验证方案“协商”进行授权。从服务器收到的身份验证标头是“协商 oW0wa6ADCgEBomQEYmBgBgkqhkiG9xIBAgIDAH5RME+gAwIBBaEDAgEepBEYDzIwMjEwMjA3MDg1NjQ3WqUFAgMJ/eSmAwIBKakMGwpBSUcuTkVULklMqhYwFKADAgEBoQ0wCxsJc3ZjcHdza”。 ---> System.Net.WebException:远程服务器返回错误:(401)未经授权。 ---> System.ComponentModel.Win32Exception: 目标主体名称不正确...
非常感谢您的帮助
【问题讨论】:
【参考方案1】:如果使用windows认证,客户端调用服务器时需要提供windows凭据:
Service1Client service1Client = new Service1Client();
service1Client.ClientCredentials.Windows.ClientCredential.UserName = "Administrator";
service1Client.ClientCredentials.Windows.ClientCredential.Password = "Password";
如果客户端没有提供windows凭据,会报错:
【讨论】:
谢谢丁鹏。您能否详细说明我如何重新创建此检查?这是后端代码的截图吗?有没有办法验证你的建议? 我通过代理类调用WCF服务。如何调用 WCF 服务? 这样我就可以使用邮递员了。开发人员有他自己的内部开发应用程序,我无权访问。 建议你根据WCF服务的WSDL文件生成代理类调用WCF服务。 Postman 只能在特定情况下用于测试。以上是关于HTTP 请求未经授权...错误的主要内容,如果未能解决你的问题,请参考以下文章
HTTP 请求未经客户端身份验证方案“匿名”授权。使用 wsdl 文件
C#使用HttpWebRequest请求url出现远程服务器返回一个错误:401未经授权