我已经竭尽全力让 Windows 身份验证在服务器上运行,但我在互联网上找不到任何帮助。Windows 身份验证正在我的本地 PC 上运行,以下是我到目前为止所做的,请帮助我了解我是否遗漏了什么或做错了什么?
- 带有 IIS(v8.5.9600)的 Windows Server 2012 R2(v6.2)
我的 web.config 如下所示:
<system.web> <httpRuntime targetFramework="4.5" maxRequestLength="1048576" /> <compilation debug="true" targetFramework="4.5" /> <authentication mode="Windows"/> <authorization> <deny users="?"/> <allow users="*"/> </authorization> </system.web>
以下是 IIS 中的身份验证部分:
- 我已在 Internet Explorer 中将该网站添加为受信任的站点(也可作为本地 Intranet),但这并没有帮助:
- 许多线程(包括这个)建议我向注册表添加 2 个条目以:
- 将 DisableStrictNameChecking 注册表项设置为 1
- 并在 BackConnectionHostNames 中添加我的网站网址
我按照下面的方法操作后仍然没有成功,我甚至在服务器和本地电脑上都执行了上述步骤:
- 我已经将其他所有内容都镜像到本地 PC 上。完成上述两个步骤后,服务器重新启动。该网站配置为在 IIS 中使用直通身份验证,并在我的本地 PC 上正常运行:
我是不是忽略了什么或者做错了什么?这个问题一直困扰着我,我对此感到厌倦。请大家帮助我或者为我指明正确的方向。
答案1
服务器不接受您在 www 授权标头中的凭据。您应该确认您在连接的系统上登录的帐户是否有权对站点进行身份验证。
此外:
https://support.microsoft.com/en-us/help/264921/how-iis-authenticates-browser-clients
如果 Windows Integrated 是唯一支持的方法(或者匿名失败),那么浏览器必须支持此方法才能与服务器通信。
If this fails, the server does not try any of the other methods.
如果基本方法是唯一受支持的方法(或者匿名方法失败),则会出现一个对话框,要求您获取凭据,然后将其传递给服务器。它会尝试发送凭据最多三次。如果这些都失败了,浏览器就不会连接到服务器。
如果同时支持 Basic 和 Windows Integrated,则浏览器将确定使用哪种方法。如果浏览器支持 Kerberos 或 Windows NT Challenge/Response,则使用此方法。它不会回退到 Basic。如果不支持 Windows NT Challenge/Response 和 Kerberos,则浏览器将使用 Basic、Digest 或 Fortezza(如果支持这些)。此处的优先顺序为 Basic、Digest,然后是 Fortezza。