Win2008 server + IIS7 设置身份模拟(ASP.NET impersonation)可以实现以不同的账户来运行ASP.NET应用程序,并且可以使得ASP.NET应用程序获得更高的权限,比如访问受限的资源。以下是详细的设置攻略:
1. 打开“服务器管理器”,点击“角色”->“添加角色”。
2. 选择“Web服务器(IIS)”并安装,注意安装时勾选“ASP.NET”和“Windows身份验证”。
3. 在IIS管理器中,选择需要身份模拟的站点,进入站点的“身份验证”模块。
4. 将“ASP.NET impersonation”设置为“启用”。
5. 设置身份模拟的账户。在应用程序的Web.config中,添加以下配置:
<identity impersonate="true" userName="用户名" password="密码"/>
其中,userName和password分别指定需要身份模拟的账户的用户名和密码。需要注意的是,这个账户需要具有访问需要权限的资源的权限。
6. 重启IIS服务,使得设置生效。
示例1:使用身份模拟访问受限的资源
假设我们需要访问一个受NTFS权限限制的文件,而当前访问该文件的账户没有权限。可以通过设置身份模拟来实现访问该文件。
首先,设置身份模拟的账户为拥有该文件的NTFS权限的账户。然后,在ASP.NET应用程序中,使用以下语句来访问该文件:
using System.Security.Principal;
...
WindowsImpersonationContext impersonationContext;
impersonationContext = ((WindowsIdentity)User.Identity).Impersonate(); // 开始身份模拟
...
// 访问文件的代码
...
impersonationContext.Undo(); // 结束身份模拟
示例2:使用身份模拟在ADO.NET中连接数据库
假设我们需要使用不同的Windows账户连接数据库,并且这些账户拥有不同的数据库权限。可以通过设置身份模拟来实现不同账户之间的切换。
首先,在Web.config文件中,设置身份模拟的账户:
<identity impersonate="true" userName="当前账户" password="当前账户密码" />
然后,在代码中使用以下语句来连接数据库:
using System.Data.SqlClient;
using System.Security.Principal;
...
WindowsImpersonationContext impersonationContext;
impersonationContext = ((WindowsIdentity)User.Identity).Impersonate(); // 开始身份模拟
...
// 连接数据库的代码
...
impersonationContext.Undo(); // 结束身份模拟
在连接数据库的过程中,应该设置为Trusted Connection(即Windows身份验证方式)。连接时会使用Web.config中的设置的身份模拟的账户来连接数据库。
以上就是Win2008 server + IIS7 设置身份模拟(ASP.NET impersonation)的完整攻略,包含了设置步骤以及两个示例。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Win2008 server + IIS7 设置身份模拟(ASP.NET impersonation) - Python技术站