- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章Win2008 server + IIS7 设置身份模拟(ASP.NET impersonation)由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
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 中删除了。删除后,就可以用到前面在界面上配置的用户名来模拟帐号了.
然而先不要高兴的太早,紧接着就出现了新的问题。 错误如下:
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这个群组,问题终于解决.
现在我们再运行上面那个显示当前用户的代码显示结果为 。
注意:我们必须要把 <identity impersonate="true" /> 删除才行,如果仅仅是设置为 <identity impersonate="false" /> 。
模拟的帐户会变成 IIS APPPOOL\DefaultAppPool,这个设置是不正确的.
到这里IIS7 下设置身份模拟就全部完成了.
最后此篇关于Win2008 server + IIS7 设置身份模拟(ASP.NET impersonation)的文章就讲到这里了,如果你想了解更多关于Win2008 server + IIS7 设置身份模拟(ASP.NET impersonation)的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我有一个 ASP.NET 应用程序,它要求用户使用基本身份验证使用他们的域帐户登录。用户可以进行选择,然后按下按钮。 在按下按钮后的某个时刻是这段代码:WindowsIdentity.Imperson
关闭。这个问题需要更多focused .它目前不接受答案。 想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post . 6年前关闭。 Improve this questi
我正在使用 google-api-php-client 0.6.1,我想知道有没有办法用服务帐户模拟具体用户?我的应用程序需要在其谷歌驱动器中存储一些文件。因此,我决定使用用户服务帐户和 .p12 k
我有一个由 IIS 托管的 Web 应用程序。它配置了表单例份验证和匿名身份验证,并且启用了模拟。应用程序池帐户是网络服务。匿名帐户是 Costa。 Costa 可以访问数据库。 NetworkSer
我想使用集成身份验证从 Web 部件访问 SQL 数据库。它应该使用 IIS 应用程序池标识。 默认情况下你会得到错误: System.Data.SqlClient.SqlException: Log
我有以下情况(大纲): 授权网络服务 此服务被调用并验证(通过执行给定的业务逻辑)用户是否有效。 自定义业务网络服务 这是为商业应用程序创建的一些网络服务,它在内部调用“授权网络服务”以验证调用商业网
在我的网站中,登录的用户可以更改他们的头像,这个过程包括将上传的图片保存到网站根目录中的文件夹中。 当我测试它时,我收到一个错误,我应该使用权限授予对该特定文件夹的访问权限。 我无法控制控制面板,控制
我正在编写一个类来处理在 asp.net、WCF 服务和 WinForms 应用程序中使用的模拟和委托(delegate)。 根据 MSDN , WindowsIdentity.GetCurrent(
我正在尝试编写一个返回 session 变量的网络服务。调用此 Web 服务的应用程序可以访问当前 session 的 session ID。 我尝试通过创建“ASPNet_SessionID”coo
这两行web.config代码有什么区别 1. 2. MyuserName 和 MyPassword 是我的 Windows 凭据。如果您将 IIS 设置为使用 Windows 凭据,则不应为“
我写了一个注册临时表的 Spark 作业 当我通过直线(JDBC客户端)公开它时 $ ./bin/beeline beeline> !connect jdbc:hive2://IP:10003 -n
我在我的 python GAE 应用程序上使用 AppAssertionCredentials 作为服务帐户进行身份验证。但是,这是一个通用服务帐户,我不知道如何授权它模拟我的 Google Apps
IIS7 与 IIS 6 相比有了很大的改动,原来在 IIS 6 下可以的设置到了 IIS 7 下有的会发生变化。身份模拟的配置上,IIS7 和 IIS6有很大不同,网上IIS6的身份模拟的文章比较
我想显示类似的东西: 案例一:“以用户身份登录” @ UserName [ logout ] 这里没有问题,我只是这样做: @ {{ app.user.username}} [ 注销 ] 案例2:“以
是否可以将浏览我的 ASP.NET Web 应用程序的用户的凭据传递给 EWS FindAppointments 调用? 我只是尝试返回事件浏览用户的日历详细信息,他们无疑有权读取自己的日历,因此该问
我可以使用通过网络服务请求授予的访问 token 访问网站管理员的 google API 网站列表,现在我想通过服务器到服务器请求来完成. 在授予服务器帐户访问列表的权限后,我无法使用以下范围正确使用
我正在尝试在网站中使用 WCF 命名管道,但失败并出现错误: There was no endpoint listening at net.pipe://localhost/mypipename th
我在 .NET Framework 4.0 程序集中有以下内容: var newId= new WindowsIdentity(duplicateTokenHandle); WindowsImpers
我们已将 ASP.NET Web 应用程序从 IIS6 升级到 IIS7 集成模式。我们的应用程序使用: 因此我们必须设置: 这是明智的吗?我的直觉说不是,但是在谷歌上搜索这个问题,在访问的每个页
我主要是在 Windows 上本地运行 hadoop 和 hive(没有 cygwin)。 对于 Hive,我所做的只是解压缩官方 zip 文件并设置 HIVE_HOME 和 PATH。另外,我将 h
我是一名优秀的程序员,十分优秀!