我在同一服务器 (IIS 7.5) 上托管的 2 个不同站点上使用了相同的代码库。
出于某种原因,当我检查 http 处理程序后面的代码上的 Identity.AuthenticationType 属性时,我看到 1 个站点为 NTLM,而另一个站点为 Negotiate。这导致了一些问题,我需要它们都使用 NTLM。
你能帮我找出为什么会出现这种差异吗?到目前为止,我看到两个 IIS 站点的配置方式相同,但当然至少有 1 个我无法检测到的差异。 谢谢!
编辑
我用过this提供从 IIS 中删除“协商”提供程序的说明的链接。这对我不起作用。我执行了
appcmd.exe set config "Contoso" -section:system.webServer/security/authentication/windowsAuthentication /-"providers.[value='Negotiate']" /commit:apphost
也许我做错了什么,但没有帮助。我仍然将“Negotiate”视为 AuthenticationType
我遇到的问题是我正在设置 web.config 模拟凭据,但它没有使用它们。它不使用我提供的凭据,而是使用匿名用户。
奇怪的是 windowsAuthentication 被禁用。我以为“Negotiate”仅由 windowsAuthentication 使用。
最佳答案
Negotiate 将在内部选择 Ntlm 或 Kerberos 身份验证。 如果站点显示 Ntlm,则仅选择 Ntlm 身份验证。 请检查两个站点并确保身份验证相同。
关于asp.net - 身份验证类型协商与 NTLM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4647492/