【问题标题】:The HTTP request is unauthorized... ErrorHTTP 请求未经授权...错误
【发布时间】: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: 目标主体名称不正确...

非常感谢您的帮助

【问题讨论】:

    标签: wcf wsdl


    【解决方案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 只能在特定情况下用于测试。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-21
    相关资源
    最近更新 更多