我一直都知道您在IIS网站/虚拟目录中设置的用户是运行该应用程序的用户(匿名用户身份)
但是在应用程序池中,我还可以设置用户(流程模型,身份)
两者之间有什么区别,如果我执行文件读取,哪一个需要访问?
编辑:
赏金是针对这个问题'但如果我使用'匿名身份验证',我选择的用户是否曾使用“匿名用户身份”? - '发表评论
答案 0 :(得分:4)
结帐this post。引用:
这两个帐户是不同的东西。 想想网站的身份 代表网站的用户。如果 您为此帐户创建了一个新网站 是匿名IIS帐户。如果你 禁用“匿名身份验证”, 您的用户必须进行身份验证 反对网站(在 intranet / Windows域名站点 使用网络可能是隐含的 凭证。)
应用程序池标识是 运行所需的Windows帐户 你的集会。通常它是 “网络服务”帐号是一个 有限的最低特权帐户 用户权限。确实如此 有网络凭据。这意味着 您可以使用它进行身份验证 针对域中的网络资源。 您还可以使用它来访问SQL 集成的服务器数据库 安全
例如,如果你的ASP.NET 应用程序必须写入文件夹, 你必须授予权限 应用程序池帐户,而不是 网站帐户。更多 有关应用程序池的信息 身份,请阅读。
答案 1 :(得分:2)
将网站标识视为定义谁可以访问该网站的规则。如果您指定要使用的匿名帐户,则该帐户必须有权访问该站点。如果禁用匿名访问,则用户的凭据必须能够访问该文件夹。
应用程序池标识定义了应用程序可以执行的操作。应用程序池的工作进程将使用应用程序池标识运行;必须授予该帐户访问应用程序需要访问的任何资源(SQL Server,文件共享等)的权限。
要回答您的问题:是,使用匿名帐户。想想你要托管一百个网站的场景,并且你不希望一个客户的文件能够访问另一个客户的文件。您可以为每个客户分配单独的匿名访问权限。每个站点的匿名帐户允许IIS仅访问与该特定站点相关的文件(前提是您已正确配置该帐户的访问权限。)
答案 2 :(得分:0)
@Michel
如果您的网站上设置了匿名访问帐户(虚拟目录)
你有
<system.web>
<identity impersonate="true" />
</system.web>
在你的web.config中,这将使用该身份。
如果您有一部分代码可以设置凭据
CredentialCache.DefaultCredentials
这将指向Anon帐户,如果您想测试您正在使用的用户,请尝试
Thread.CurrentPrincipal.Identity.Name.ToString()
有关更多信息,请查看此帖子 http://blogs.iis.net/sakyad/archive/2008/11/19/process-and-thread-identity-in-asp-net-a-practical-approach.aspx