繁体   English   中英

启用基本和Windows身份验证

[英]Enable both Basic and Windows authentication

我在IIS7上使用Windows身份验证启用了我的服务。

    <binding name="Soap.HttpsBinding" closeTimeout="00:05:00"
             openTimeout="00:05:00" receiveTimeout="00:05:00" sendTimeout="00:05:00">
      <security mode="Transport">
        <transport clientCredentialType="Windows" proxyCredentialType="None">
          <extendedProtectionPolicy policyEnforcement="WhenSupported" />
        </transport>
        <message clientCredentialType="UserName" algorithmSuite="Default" />
      </security>
    </binding>

我的客户端使用相同的绑定详细信息成功连接到它。

我最近要求添加基本身份验证以支持一些遗留系统。 我认为我知道的一切都说我们可以并排运行。

我启用了基本身份验证,旧系统可以连接。 但是,我们现有的所有WCF客户端现在都抛出以下异常:

MessageSecurityException:HTTP请求未经授权,客户端身份验证方案为“Negotiate”。 从服务器收到的身份验证标头是'Basic realm =“mydomain.local”,Negotiate,NTLM'。

  1. 为什么Basic在模块列表中位于其他位置之下时首先列出?
  2. 为什么客户没有失败基本并转向谈判? (当然他们不一定相同)
  3. 如何在同一WCF服务上同时支持Basic和Windows身份验证?

问候,Rob。

好吧,事实证明这是我遇到的更具误导性的Microsoft错误消息之一。

正在初始请求上创建401身份验证错误,而不会在事件查看器中记录任何异常。

答案似乎是使用system.webServer - > httpErrors

由于我想在URL中使用波浪号(〜),我将配置设置为以下内容:

<httpErrors>
  <clear />
  <error statusCode="401" responseMode="ExecuteURL" path="~/error.xml" />
</httpErrors>

无论是使用代字号还是ExecuteURL,我最终发现使用以下工作:

<httpErrors>
  <clear />
  <error statusCode="401" responseMode="File" path="/error.xml" />
</httpErrors>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM