1)我想知道假设我们在VS中以调试模式使用ASP.NET Web应用程序,那么代码在哪个用户帐户下运行?
2)我也想知道,假设我们将此发布到IIS然后,将其设置为使用WBA / FBA,然后,登录用户的用户名/密码用于向ASP.NET验证用户身份但是,代码(SQL查询等)在apppool帐户的凭据下运行。 此外,哪个凭证用于访问服务器上的资源,如文件?您对此有何看法?
答案 0 :(得分:3)
1)我想知道我们正在使用ASP.NET Web应用程序 在VS中调试模式,然后,代码在哪个用户帐户下运行?
这取决于托管。 VS提供4种主机和方式。调试Web应用程序:VS Dev Server(VS 2012),IIS Express,本地IIS和自定义主机(VS 2013)。 Devs服务器通常在您的-Administrator-帐户下运行,可能不适合测试安全性。直接使用IIS作为开发Web服务器可以让您在更接近IIS生产Web服务器的环境中工作。
这是在Web项目属性的Web选项卡中配置的。
2)我也想知道,假设我们将此发布到IIS然后, 将其设置为使用WBA / FBA,然后输入登录的用户名/密码 用户用于向ASP.NET站点验证用户,但是, 代码在apppool帐户的凭据下运行。你有什么看法? 这一点?
不是很清楚,但我认为您的IIS安全性可能不正确。每个网站只有一个应用程序池在特定帐户下运行(默认为apppool帐户,但可以是网络服务或本地系统)。当用户登录时,此过程中绝对没有任何更改。用户刚刚使用身份验证提供程序进行连接:Windows身份验证或表单身份验证是两种常见的提供程序。用户身份保存在http上下文中,允许您稍后使用授权规则。因此,每个代码块始终在同一个帐户下运行(除非您启用委派,但这是另一个故事)。
我建议你阅读asp.net security上的this complete introduction。