我已经在 IIS 6 上配置了一个网站。当我从公司网络内部访问该网站时,它可以正常工作。
当我尝试从网络外部访问该网站时,浏览器会要求输入 Windows 凭据。
应用程序池配置为作为网络服务运行。网站配置为:“启用匿名访问”。
我已经指定了一个带有密码的用户帐户。
当我运行 Microsoft 身份验证和访问控制诊断时,我收到以下消息:
“当前配置需要 IIS 子身份验证。但是,IIS 子身份验证组件 iissuba.dll 当前尚未配置。”
“当前配置使用 IIS 子身份验证进行匿名身份验证。这要求将工作进程配置为以本地系统身份运行,出于安全原因,不建议这样做。”
问题是我不想使用子身份验证,因为我知道我正在使用的用户帐户的密码。
用户帐户是 MACHINENAME\IUSR_MACHINENAME。
我必须做什么才能允许网络外部的人员访问该网站而无需提供凭据?
答案1
您可以在 Web 服务器上的事件查看器安全日志中查看哪个帐户正在发出 IIS 调用。如果它使用集成身份验证,您应该会在安全日志中看到一个唯一的用户帐户。如果它使用匿名用户访问网站,您将在日志中看到 IUSR 帐户。
我建议访问内部站点(它正在运行的地方)并查看安全日志。如果您看到您的域/用户帐户发出请求,则您知道匿名用户帐户存在问题。如果启用了匿名访问和其他身份验证方法(例如集成),则始终会首先尝试匿名访问。
我还需要考虑其他一些事情。
- 您在站点或虚拟目录中定义了多种身份验证模式吗?这位于 IIS 站点/虚拟目录的“目录安全”选项卡下。
-web.config 中是否启用了集成身份验证?()
-IUSR 帐户是否是 IIS_WPG 本地计算机组的成员?
-IUSR 帐户属于哪些组?如上所述,IUSR 帐户需要访问您的文件系统。
- 仔细检查您的网站确实在您认为的应用程序池下运行。
- 仔细检查您的应用程序池确实在网络服务帐户下运行。
-重新输入您的 IUSR 帐户详细信息。
希望这有帮助,戴夫
答案2
您需要确保主文件夹对网络服务和您启用的匿名帐户均具有读取权限。通常建议在 1 个用户身份下运行网站和应用程序池。