Win2008 server + IIS7 设置身份模拟(ASP.NET impersonation)

作者:eaglet

转载请注明出处

IIS7 与 IIS 6 相比有了很大的改动,原来在 IIS 6 下可以的设置到了 IIS 7 下有的会发生变化。身份模拟的配置上,IIS7 和 IIS6有很大不同,网上IIS6的身份模拟的文章比较多,但介绍IIS7的比较少,我把的一些折腾的经验在这篇博客中写下来,以供参考。

IIS 7 有两种 ASP.NET Application Mode。

一种是 集成模式(Integrated Mode) 这个是默认的模式,也是微软推荐的模式,另一种是 经典模式(Classic Mode) ,这种模式是用于兼容老版本。集成模式使用更方便而且安全性更好,不需要把模拟帐户的用户名和密码写在配置文件中,这样更安全也更方便。既然我们已经用了IIS 7,那么我们还是按微软推荐的方式使用集成模式比较好。

集成模式下,身份模拟可以完全通过界面来完成:

首先如上图所示,IIS 7 在 Server Level 下有个 IIS-> Authentication ,双击这个图标我们看到下面这个图:

在这个图中我们看到 IIS7 多了一个 ASP.NET Impersonation 的功能,在 Actions 里面点 Enable 开启身份模拟功能,然后点 Edit 编辑身份模拟。

我们看到上面这个编辑框,在这个编辑框中,我们指定要进行身份模拟的帐号,这个帐号必须是本地已经存在的帐号,点 Set 输入这个帐号的名称和密码。

然后点OK。

到这里,按照 MSDN 中的帮助文档,身份模拟应该就算设置成功了。

然后我做了一个简单的测试页面看看身份模拟是否成功,测试程序如下:

protected void Page_Load(object sender, EventArgs e)
{
    Response.Write(System.Security.Principal.WindowsIdentity.GetCurrent().Name);
}

运行的结果居然是:

NT AUTHORITY\IUSR

也就是说 Asp.net 没有用我设置的这个 MyAccount 帐号模拟运行,而是仍然用IUSR 帐号模拟运行。查了好久,才发现是下面问题造成:

用 Virtual Studio 2008 生成网站时,web.config 文件中默认会有这样一个设置:

<identity impersonate="true" />
这个设置是为 IIS 6 做身份模拟而设置的。在这种情况下,用户身份的认证交给IIS来进行。当允许匿名登录时,IIS将一个匿名登录使用的标识(缺省情况下是IUSR)交给ASP.NET应用程序。当不允许匿名登录时,IIS将认证过的身份标识传递给ASP.NET应用程序。ASP.NET的具体访问权限由该账号的权限决定。

这个设置在 IIS 7 下已经过时了,如果用古典模式,才需要这样设置。

找到问题原因后,我把 <identity impersonate="true" />  这个配置项从 web.config 中删除了。删除后,就可以用到前面在界面上配置的用户名来模拟帐号了。

然而先不要高兴的太早,紧接着就出现了新的问题。 错误如下:

Could not load file or assembly 'xxxx' or one of its dependencies. Access is denied.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.IO.FileLoadException: Could not load file or assembly 'GetPathFileLib' or one of its dependencies. Access is denied.
Source Error:

从错误提示看,应该是目前这个模拟帐户没有足够的权限去执行 bin 目录下的 xxxx.dll ,于是我把bin 目录赋予模拟帐户 MyAccount 完全控制的权限,结果还是不行,我在网上搜了一下,有人说需要将C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary 这个目录也设置为完全控制,于是照做了,还是不行。无奈之下,我把MyAccount 帐户加入了 IIS_IUSRS这个群组,问题终于解决。

现在我们再运行上面那个显示当前用户的代码显示结果为

MachineName\MyAccout
注意:我们必须要把 <identity impersonate="true" /> 删除才行,如果仅仅是设置为 <identity impersonate="false" />

模拟的帐户会变成  IIS APPPOOL\DefaultAppPool,这个设置是不正确的。

到这里IIS7 下设置身份模拟就全部完成了。

(0)

相关推荐

  • Windows server 2008 iis7/iis7.5启用父路径的方法

    windows server 2008 r2的IIS7或者iis7.5还是和之前的win2000.winxp.win2003系统的IIS版本相比,在界面上和功能上都有很大的变化,首先是功能增加了,安全性增强了,但配置操作的也比较以前的老版本复杂多了. 我用的是win2008 r2中文版,安装配置asp程序的时候发现,后台管理的登录界面的验证码死活显示不出来,后来估计是path的问题,但是又找不到像IIS6.0一样的设置.在网站属性->主目录->配置->选项中启用父目录没有这个选项.后来发

  • win2008下安装SQL SERVER 2005出现IIS功能要求 警告解决方案

    您会收到 SQL Server 2005 安装程序正在运行 Windows Vista 的计算机上的系统配置检查页或 Windows Server 2008 的一个服务器核心安装上一条警告消息 症状: 请考虑以下情形.您安装 Microsoft SQL Server 2005 或 Microsoft SQL Server 2005 速成版通过高级服务正在运行下列操作系统之一的计算机上:•Windows Server 2008 操作系统 •Windows Vista 操作系统 在这种情况下您会收到

  • Windws Server 2008 R2 WEB环境配置之安装IIS方法

    Windows Server 2008 R2是目前主流的服务器系统之一,其使用简单,性能卓越,已经有越来越多的公司使用其作为业务服务的载体.而IIS是基于windows系统的一个互联网信息服务,可以使用IIS创建网站.FTP站点等服务. 本篇是<Windws Server 2008 R2 WEB环境配置之IIS+FastCGI+PHP+MYSQL+phpMyAdmin>的第一篇,所以大家在看的时候最好按顺序看,这样有条理,也方便理解. 安装IIS 打开服务器管理器,角色,添加角色 直接下一步,

  • Windows Server 2012 Iis8 php环境配置方法

    今天给大家做个php配置的教程,支持mysql数据库,可能偶配置环境就几下子,很容易,但希望大家仔细看,因为很多步骤都要细心的,不然走错一步,便导致整个环境配置不成功,偶不喜欢复制这复制那的,所以清一色安装包来操作,这样高效而且速度,还支持后续在线升级php.mysql. 以下是具体步骤:(软件都要靠自己去网上找,本教程不提供以下各种软件) 软件及平台要求:1.平台:windows 2012 server datacenter(数据中心版)2.环境:iis8   php5.3.20   rewr

  • win2003 iis6.0 NET2.0的Server Application Unavailable的问题!

    所属分类:.NET技术 .NET Framework ---------------------------------------------------------------------- 打开网页是这样的:  Server Application Unavailable   The web application you are attempting to access on this web server is currently unavailable.  Please hit th

  • Microsoft Windows 2008 Server R2 iis7.5上传文件限制200K更改

    Windows 2008 Server R2,默认设定200K的限制. 对上传文件限制大小进行更改,具体设定方法如下: 找到ASP选项 点属性,找到"最大请求实体主体限制"默认值为"200000"即200K,不能满足上传文件的需要,要进行更改. 改为10M大小. 也可以通过下面方法更改: 将网站服务"停止"找到"请求筛选"对"允许的最大内容长度"进行修改 修改完成.

  • Tomcat6.0与windows 2003 server 的IIS服务器集成

    1.去对应网站下载jdk和tomcat http://www.sun.com/ http://tomcat.apache.org/ 2.对jdk进行安装,并配置环境变量 3.http://tomcat.apache.org/connectors-doc/上面下载isapi_redirect.dll,此处使用1.2.27版本. 并将isapi_redirect-1.2.27.dll拷贝到<CATALINA_HOME>/bin目录下 4.在<CATALINA_HOME>/conf目录下

  • windows server 2008/2012安装php iis7 mysql环境搭建教程

    windows server 2008/2012安装php iis7 mysql环境搭建教程,具体内容如下 1.安装IIS windows server 2008的IIS版本为7.0,包括fastcgi,安装十分方便. 打开"开始"菜单→"服务器管理",出现服务器管理界面(图1) 图1 - 服务器管理 滚动条下翻,或者点击主菜单的"角色",然后点击"添加角色",出现向导页面后点击下一步,选择"web服务器(IIS)&

  • Win2008 Server下IIS配置安装教程

    最近又买了台服务器,接下来就是配置环境啦. 接下来接记录一下IIS的配置过程. 首先找到服务器管理器 打开后找到角色,点击添加角色 处理添加角色向导 勾选Web服务器(IIS) 点击添加必要功能 然后下一步 下一步 这里默认即可,可以去掉目录浏览,因为一般网站都用不到. 根据需要添加ASP.NET ..NET 扩展性.CGI.ISAPI 扩展.ISAPI 筛选器 如果需要用到asp则勾选asp,如果需要用shtm需要开启在服务器端的包含文件. 安装sqlserver一定要勾选 asp.net..

  • windows server 2008R2系统 IIS7.5配置伪静态的方法(urlrewrite)

    从网上找了一下,原来微软IIS官方网站给IIS7及以后续版本提供了个URL重写组件. 下载地址:http://www.iis.net/download/URLRewrite或者http://www.jb51.net/softs/479310.html 首先,打开上面网址,到IIS官方网站下载模块. 根据需要,点击右侧的下载链接(操作系统是64位的,就下载x64版本:32位的系统,就下载x86版本) IIS版本:IIS 7.5 URL Rewrite组件:IIS URL Rewrite Modul

随机推荐