IIS 8 Windows身份验证外部访问反复要求输入凭据求助
针对你遇到的Windows身份验证下外部访问反复弹窗的问题,结合你提到的重定向改动、本地正常/外部异常的现象,以及提供的三层级身份验证配置截图,试试以下排查步骤:
确认子路径身份验证配置一致性
结合你提供的网站层级、站点根层级、实际站点层级的配置截图,重点检查/sa/sites/siteName/(实际站点层级)是否仅启用Windows身份验证,并禁用匿名身份验证。同时确保上层配置的身份验证规则没有强制覆盖子路径的设置——比如上层如果启用了匿名,可能导致子路径的Windows身份验证失效。排查重定向引发的无权限请求
自定义重定向可能触发了客户端对未配置Windows身份验证的资源请求(如静态文件、隐藏接口)。开启IIS的请求日志,查看外部访问时的具体请求路径,定位返回401状态码的请求,这类请求会直接触发凭据弹窗。配置浏览器自动发送凭据
外部访问时,浏览器默认将站点归为Internet区域,不会自动传递Windows凭据。把https://mysite添加到浏览器的本地Intranet区域(以Edge为例:设置→Cookie和网站权限→站点权限→本地Intranet→添加站点),浏览器会自动尝试用当前登录的Windows账户凭据完成验证。修正应用程序池权限配置
不要仅依赖IUSER权限,确保网站对应的应用程序池身份(如NetworkService、域账户)拥有站点文件夹的读取+执行权限。如果使用ApplicationIdentity虚拟账户,需要手动将该账户的权限添加到站点目录的安全设置中。检查NTLM/Kerberos协商有效性
如果服务器在域环境中,确认Kerberos的SPN服务主体名称配置正确;如果是工作组环境,在IIS的Windows身份验证高级设置里,勾选“启用NTLM”——外部访问时Kerberos可能因网络环境限制无法协商,NTLM是更稳定的备选方案。确保重写规则保留身份验证头
如果用IIS URL重写模块实现自定义重定向,检查规则中是否保留了Authorization请求头。可以在重写规则的<action>节点内添加:<set name="Authorization" value="{HTTP_AUTHORIZATION}" />避免重定向过程中丢失凭据信息。
内容的提问来源于stack exchange,提问作者Developer

