asp.net - 在 ASP.NET 中,代码在哪些凭据下运行?

标签 asp.net .net security authentication credentials

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

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

最佳答案

1) I want to know suppose we are using an ASP.NET web application in debug mode in VS, then, the code runs under which user account?

这取决于托管。 VS 提供了 4 种托管和调试 Web 应用程序的方法:VS Dev Server (VS 2012)、IIS Express、本地 IIS 和自定义主机 (VS 2013)。开发服务器通常在您的“管理员”帐户下运行,可能不适合测试安全性。直接使用 IIS 作为开发 Web 服务器可以让您在更接近 IIS 生产 Web 服务器的环境中工作。

这是在 Web 项目属性的 Web 选项卡中配置的。 enter image description here

2) I also want to know, suppose we publish this to the IIS and then, set it up to use WBA/FBA, then, the username/password of logged in user is used to authenticate user to the ASP.NET site, however, the code runs under credentials of apppool account. What is your view on this point?

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

我强烈建议您阅读this complete introduction关于 ASP.NET 安全性。

关于asp.net - 在 ASP.NET 中,代码在哪些凭据下运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23076163/

相关文章:

.net - 在 ASP.NET 应用程序中实现多语言的最佳方式

javascript - 从带有主文件的 aspx 文件调用时,jQuery 代码不起作用

c# - 启动 ASP.NET MVC 4 应用程序时执行代码

.net - 如何打包针对通用Windows平台的.NET库?

ASP.NET 中继器模板,每 N 个元素的条件代码

c# - .NET/C# - 反射 - 曾经使用过的 System.IO.File

c# - 有没有办法在不抛出异常的情况下等待 TPL 任务?

android - 如何验证该应用程序是由我的证书签名的?

C++ 安全异常处理

asp.net - 当网站位于服务于 TLS 证书的负载均衡器后面时,将 cookie 标记为表单例份验证中的 "secure"