我的服务是在 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 请求未经客户端身份验证方案“协商”的授权。从服务器收到的身份验证标头是“Basic realm="mydomain.local",Negotiate,NTLM'。
- 为什么 Basic 在模块列表中位于其他模块下方时首先列出?
- 为什么客户没有失败 Basic 并转向 Negotiate?(当然它们不必相同)
- 如何在同一个 WCF 服务上同时支持 Basic 和 Windows 身份验证?
问候,罗布。