ASP.NET 代码获取运行 ASP.NET 的帐户

作者:vkvi 来源:ITPOW(原创) 日期:2010-4-21
System.Security.Principal.WindowsIdentity.GetCurrent().Name

默认情况下:

  • Windows 2000 的 IIS 5 中,该值为:计算机名\ASPNET
  • Windows 2003 的 IIS 6 和 Windows 2008 的 IIS 7 中,该值为:NT AUTHORITY\NETWORK SERVICE。

在开启了 ASP.NET 模拟的情况下,该值就是运行的模拟帐户,比如 IUSR_CFTEA。

顺便说一下,为什么要模拟呢?在虚拟主机中,若不使用模拟,则各个虚拟主机站点使用 ASP.NET 时,都使用同一个帐户来运行(如上面介绍的),这样就造成虚拟主机 A 可以访问的资源,虚拟主机 B 也可以访问,这就不安全了,如果一模拟,则各个虚拟主机运行 ASP.NET 的帐户就可以不同了,就可以利用 NTFS 权限隔离资源了。

IIS 5、IIS 6 中模拟帐户是归在 ASP.NET 设置中的,而 IIS 7 将其放在身份认证中。注意,在 IIS 中设置的模拟帐户其实就是设置应用程序下 web.config 的 system.web 节下的 <identity impersonate="true" />,也就是说应用程序所有者也可以更改该节的值

相关文章