您现在的位置: 无忧电子商务网 >> 信息学院 >> 程序开发 >> asp.net >> 正文

ASP.NET实现身份模拟

作者:佚名    信息学院来源:整理    点击数:    更新时间:2008-1-30 我要参与讨论

   

使用模拟时,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 文件来响应用户代理请求,但是可以通过其他途径读取配置文件,例如通过在包含服务器的域上具有适当

[1] [2] 下一页

在google里搜索更多ASP.NET实现身份模拟

Google
Web www.51ec.org
【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
我来说两句 对此文章发表了评论
  昵 称: *必填    ·注册用户·
  评 分: 1分 2分 3分 4分 5分     严禁发表危害国家安全、政治、黄色淫秽等内容的评论,用户需对自己在使用本网站服务过程中的行为承担法律责任。本站管理员有权保留或删除评论内容,评论内容只代表机友个人观点,与本网站立场无关。  
评 论
内 容

 
评论列表 (最新 评论仅限网友观点!)

供求信息




| 设为首页 | 加入收藏 | 关于我们 | 广告服务 | 联系方式 | 友情链接 | 版权申明