当我的应用程序用户尝试浏览我的应用程序时,他们收到 http 401 错误。
我的应用程序是一个使用 Windows 身份验证的内联网 Web 应用程序。匿名身份验证和身份模拟已禁用。创建了一个单独的应用程序池并将其分配给网站。IIS ApplicationPool\myApplnAppPool 被授予对应用程序根文件夹的读取和执行权限。
我验证了工作进程(w3wp.exe),它在服务器任务管理器中的应用程序池标识下运行。
当我授予每个人(每个人域组)对我的网站文件夹的访问权限时,他们能够访问该应用程序。但是,我认为在文件夹级别授予每个人组访问权限的做法不正确。
此外,我的应用程序创建并更新应用程序日志文件(在应用程序根文件夹下)。
任何帮助都将不胜感激。谢谢。
答案1
这取决于您使用该应用程序的目的以及其身份验证的工作方式。如果应用程序需要用户的凭据才能执行任何操作,那么让所有人(即您域中的所有人,不包括来宾)都拥有访问权限可能并不是一个坏主意。
如果您确实想限制特定人员的访问权限,最佳做法是创建一个组并授予他们所需的访问权限(可能是读取/执行)。例如,您还可以确保该组被拒绝访问配置文件,并为该应用程序创建一个具有更多访问权限的“支持”组。
最后,无论使用什么凭证(匿名身份验证实际上只是模仿您为此目的提供的某个特定帐户)都需要具有读取、可能执行和遍历文件系统的权限才能访问网站。
从您上面的评论来看,如果您确实需要知道哪些特定域用户正在访问它,则一定要保持匿名身份验证禁用,但如果您不需要限制对域用户子集的访问,则授予每个人对该域的访问权限没有任何坏处。
答案2
通过启用 Windows 身份验证并禁用匿名,您基本上是在说“为了访问我的网站,您必须拥有访问权限,否则您将无法进入”。即使应用程序池拥有访问权限,您也会在网站级别阻止它。这就是为什么当您授予每个人访问权限时它会起作用的原因。听起来您想要一个匿名网站,并让应用程序自行确定某人拥有哪些权限。