在ASP.NET中,代码运行的凭据是什么?

时间:2014-04-15 06:32:39

标签: asp.net .net security authentication credentials

1)我想知道假设我们在VS中以调试模式使用ASP.NET Web应用程序,那么代码在哪个用户帐户下运行?

2)我也想知道,假设我们将此发布到IIS然后,将其设置为使用WBA / FBA,然后,登录用户的用户名/密码用于向ASP.NET验证用户身份但是,代码(SQL查询等)在apppool帐户的凭据下运行。 此外,哪个凭证用于访问服务器上的资源,如文件?您对此有何看法?

1 个答案:

答案 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选项卡中配置的。 enter image description here

  

2)我也想知道,假设我们将此发布到IIS然后,   将其设置为使用WBA / FBA,然后输入登录的用户名/密码   用户用于向ASP.NET站点验证用户,但是,   代码在apppool帐户的凭据下运行。你有什么看法?   这一点?

不是很清楚,但我认为您的IIS安全性可能不正确。每个网站只有一个应用程序池在特定帐户下运行(默认为apppool帐户,但可以是网络服务或本地系统)。当用户登录时,此过程中绝对没有任何更改。用户刚刚使用身份验证提供程序进行连接:Windows身份验证或表单身份验证是两种常见的提供程序。用户身份保存在http上下文中,允许您稍后使用授权规则。因此,每个代码块始终在同一个帐户下运行(除非您启用委派,但这是另一个故事)。

我建议你阅读asp.net security上的this complete introduction