`

ASP.NET实现身份模拟

阅读更多

使用模拟时,ASP.NET 应用程序可以选择以这些应用程序当前正为之操作的客户的身份执行。通常这样做的原因是为了避免在 ASP.NET 应用程序代码中处理身份验证和授权问题。而您依赖于 Microsoft Internet 信息服务 (IIS) 来验证用户,然后将已通过验证的标记传递给 ASP.NET 应用程序;或者,如果无法验证用户,则传递未经身份验证的标记。不论何种情况,如果启用了“模拟”,则 ASP.NET 应用程序会模拟所收到的任何标记。当前模拟客户的 ASP.NET 应用程序依赖于 NTFS 目录和文件中的设置来允许客户获得访问权限或拒绝其访问。务必将服务器文件空间格式化为 NTFS,以便可以设置访问权限。

默认情况下禁用模拟。为了 ASP 的兼容性,用户必须显式启用模拟。如果为给定的应用程序启用模拟,则 ASP.NET 总是模拟 IIS 提供给 ISAPI 扩展的访问标记。该标记既可以是已验证用户标记,也可以是匿名用户的标记(如 IUSR_MACHINENAME)。不论应用程序中使用哪种身份验证类型,模拟都会发生。

只能模拟应用程序代码,编译和配置作为进程标记读取。编译的结果放在“Temporary ASP.NET files”目录中。所模拟的帐户需要对该目录的读/写访问权。如果应用程序位于通用命名规则 (UNC) 共享上,除非使用配置帐户,否则,ASP.NET 将总是模拟提供给 IIS 的标记来访问该共享。如果提供了显式配置的帐户,ASP.NET 将使用该帐户取代 IIS UNC 标记。确实需要基于每个请求的模拟的应用程序可以直接配置为模拟提交请求的用户。

默认情况下,在计算机级别上禁用模拟。而且除非被重写,否则所有的应用程序域都继承此设置。可以通过将配置文件放置在应用程序根目录下来启用模拟。有关 ASP.NET 配置系统的更多信息,请参见 ASP.NET 配置。

与其他配置指令的情况相同,此指令分层应用。除非被显式重写,否则,层次结构中的嵌套程序将遵从它。此设置的默认值如下所示。

<impersonation enable="false"/>

为应用程序启用模拟的最小配置文件可能看上去和下面的示例类似。

<!-- Web.config file. -->
<identity impersonate="true"/>

还有以可配置身份运行应用程序的名称支持。例如:

<identity impersonate="true" userName="contoso\Jane" password="pass"/>

这将允许整个应用程序以 contoso\Jane 运行,不论请求的身份如何,只要密码正确即可。可以将这种类型的模拟委托给另一台计算机。

您可以以编程的方式读取被模拟用户的标识,如下例所示。

[Visual Basic]
Dim username As String = System.Security.Principal.WindowsIdentity.GetCurrent().Name

[C#]
String username = System.Security.Principal.WindowsIdentity.GetCurrent().Name;

在上例中,userName 和 password 以明文形式存储在配置文件中。虽然 IIS 不传输 .config 文件来响应用户代理请求,但是可以通过其他途径读取配置文件,例如通过在包含服务器的域上具有适当凭据的已经过身份验证的用户。为了增强安全性,标识部分支持在注册表中存储加密的 userName 和 password 属性,如下例所示。

   userName="registry:HKLM\Software\AspNetIdentity,Name"
   password="registry:HKLM\Software\AspNetIdentity,Password"

字符串中位于关键字 registry 之后和逗号之前的部分表示 ASP.NET 打开的注册表项的名称。逗号之后的部分包含一个字符串值的名称,ASP.NET 从此名称中读取凭据。必须有逗号,并且凭据必须存储在 HKLM 配置单元中。如果配置格式不正确,则 ASP.NET 不会启动辅助进程,然后将显示造成当前帐户创建失败的代码路径。

凭据必须为 REG_BINARY 格式,并且包含 Windows API 函数 CryptProtectData 调用的输出。可以用 ASP.NET 设置注册表控制台应用程序 (Aspnet_setreg.exe) 来创建加密凭据并将它们存储在注册表中。该应用程序使用 CryptProtectData 完成加密。若要同 Visual C++ 源代码和文档一起下载 Aspnet_setreg.exe,请访问 Web 站点 www.asp.net 并搜索“aspnet_setreg”。

应该对存储加密凭据的密钥的访问权限进行配置,仅向 Administrators 和 SYSTEM 提供访问权。由于密钥会被作为 SYSTEM 运行的 ASP.NET 进程读取,因此应设置以下权限:

Administrators:F
SYSTEM:F
CREATOR OWNER:F
ProcessAccount:R
这可以提供两道保护数据的防线:

ACL 权限要求访问数据的身份是 Administrator。
攻击者必须在服务器上运行代码 (CryptUnprotectData) 才能恢复帐户的凭据。

 
分享到:
评论

相关推荐

    ASP.NET中的身份模拟(源码教程)

    在一些应用场景中,需要以较高的帐户权限来执行一段程序从而实现某个功能。比如:在ASP.NET程序中,如果需要写入一段日志到文件中,...上面的情况可能不是必须这样做的,但以编程方法实现身份模拟的方法还是很有用的!

    ASP.NET身份验证与授权

    对于ASP.NET身份验证与授权的讲解 ASP.NET应用程序安全概述 用户账户模拟 基于Windows的身份验证 基于表单的身份验证 ASP.NET 2.0的成员资格和角色管理器 安全性相关的控件 ASP.NET网站管理工具 成员资格和角色...

    用ASP.NET管理IIS站点,源码提供

    通过ASP.NET 2.0(C#)管理IIS站点。... 主要技术是用了ASP.NET的身份模拟技术,App_Code/imp.cs构造函数中的用户名和密码是对应当前操作系统的管理员用户名和密码。 代码粗糙简单,仅供参考交流。

    ASP.NET基础教程

    全面系统地介绍了ASP.NET 2.0应用开发技术,包括ASP.NET 2.0服务器控件,ASP.NET 2.0数据源控件和新的数据绑定方法,验证控件,样式、外观和主题,母版页,站点导航和导航控件,ASP.NET 2.0的身份验证、授权和模拟,...

    asp.net webapi2 基于token令牌的身份验证

    asp.net webapi2 基于token令牌的身份验证 通过浏览器模拟附加token的headers请求授权

    微软ASP.NET入门教程

    微软ASP.NET入门教程 .DOC文档(解压后13M,可直接打印,共300页) 入门 介绍 什么是 ASP.NET? 语言支持 ASP.NET Web 窗体 Web 窗体介绍 使用服务器控件 对控件应用样式 服务器控件窗体验证 Web 窗体用户...

    ASP.net入门教程

    有关 ASP.NET 标识的更多信息,请参见配置 ASP.NET 进程标识和 ASP.NET 模拟。 状态管理功能 ASP.NET 提供了内部状态管理功能,它使您能够存储页请求期间的信息,例如客户信息或购物车的内容。您可以保存和管理应用...

    基于asp.NET的在线考试系统(源码+数据库).zip

    为了保障整个系统的安全性,在线考试系统实现了分类验证的登录模块,通过此模块,可以对不同身份的登录用户进行验证,确保了不同身份的用户操作系统。在抽取试题上,系统使用随机抽取试题的方式,体现了考试的客观与...

    asp.net技术内幕(1)

    第一部分 使用ASP.NET Web表单 &lt;br&gt;第1章 建立ASP.NET页面 &lt;br&gt;1.1 ASP.NET和.NET框架 1.1.1 .NET框架类库 1.1.2 理解名称空间 1.1.3 标准的ASP.NET名称空间 1.1.4 与.NET框架兼容的语言 ...

    ASP.NET Core学习之使用JWT认证授权详解

    认证授权是很多系统的基本功能 , 在以前PC的时代 , 通常是基于cookies-session这样的方式实现认证授权 , 在那个时候通常系统的用户量都不会很大, 所以这种方式也一直很好运行, 随着现在都软件用户量越来越大, 系统...

    ASP.NET4高级程序设计第4版 带目录PDF 分卷压缩包 part1

    ASP.NET 4高级程序设计(第4版)》【原版书为:Pro ASP.NET 4 in C# 2010】是ASP.NET领域的鸿篇巨制,全面讲解了ASP.NET4的各种特性及其背后的工作原理,并给出了许多针对如何构建复杂、可扩展的网站从实践中得出的...

    2.ASP.NET.2.0.高级编程(第4版) [1/7]

    2.ASP.NET.2.0.高级编程(第4版) [1/7] 原书名: Professional ASP.NET 2.0 原出版社: Wrox 作者:(美)Bill Evjen, Scott Hanselman, Farhan Muhammad [同作者作品] [作译者介绍] 译者: 李敏波[同译者作品] ...

    ASP.NET4高级程序设计(第4版) 3/3

     《ASP.NET 4高级程序设计(第4版)》是ASP.NET领域的鸿篇巨制,全面讲解了ASP.NET4的各种特性及其背后的工作原理,并给出了许多针对如何构建复杂、可扩展的网站从实践中得出的建议。书中还深入讲述了其他ASP.NET图书...

    Asp.net Mvc 身份验证、异常处理、权限验证(拦截器)实现代码

    本问主要介绍asp.net的身份验证机制及asp.net MVC拦截器在项目中的运用。现在让我们来模拟一个简单的流程:用户登录》权限验证》异常处理

    ASP.net技术内幕

    ASP的最新版本ASP.NET是Microsoft用于建立动态的数据库驱动网站的技术。... 18.4.4 逐步执行ASP.NET页面 18.5 小结 &lt;br/&gt;第五部分 保护ASP.NET应用程序 &lt;br/&gt;第19章 使用基于表单的身份验证 &lt;br...

    C#开发基于ASP.Net和Angular开发的管理系统.zip

    用户和租户模拟 用户帐户链接 两因素身份验证(电子邮件、短信、谷歌身份验证器) 用户锁定 LDAP/Active Directory 登录支持 Active Directory 联合身份验证服务 (ADFS) 身份验证 社交媒体登录(Facebook、Twitter、...

    Interop.Excel.Application

    ASP.NET 有一个在应用程序没有模拟时使用的基进程标识(通常,在 IIS 5 上为 {MACHINE}\ASPNET,在 IIS 6 和 IIS 7 上为网络服务,在 IIS 7.5 上为配置的应用程序池标识)。如果应用程序正在通过 ...

    ASP.NET2.0高级编程(第4版)1/6

    本书全面介绍了ASP.NET各种编程技能和2.0版中的巨大变化,并详细阐述了2.0版中的每个新特性。书中提供了大量的实例,可帮助读者快速掌握如何在.NET平台下开发功能强大的ASP.NET应用程序。本书适合有一些基础的ASP...

Global site tag (gtag.js) - Google Analytics