标签:word 集成 基本 推荐 www intern frame 浏览器 结果
<identity impersonate="true" userName="accountname" password="password" />
Web.config 设置 |
变量位置 |
结果标识 |
<identity impersonate="true"/> |
HttpContext |
- |
<identity impersonate="false"/> |
HttpContext |
- |
<identity impersonate="true" /> |
HttpContext |
用户提供的名称 |
<identity impersonate="false"/> |
HttpContext |
用户提供的名称 |
Web.config 设置 |
变量位置 |
结果标识 |
<identity impersonate="true"/> |
HttpContext |
域\用户名 |
<identity impersonate="false"/> |
HttpContext |
域\用户名 |
<identity impersonate="true"/> |
HttpContext |
用户提供的名称 |
<identity impersonate="false"/> |
HttpContext |
用户提供的名称 |
Web.config 设置 |
变量位置 |
结果标识 |
<identity impersonate="true"/> |
HttpContext |
域\用户名 |
<identity impersonate="false"/> |
HttpContext |
域\用户名 |
<identity impersonate="true"/> |
HttpContext |
用户提供的名称 |
<identity impersonate="false"/> |
HttpContext |
用户提供的名称 |
Web.config 设置 |
变量位置 |
结果标识 |
<identity impersonate="true"/> |
HttpContext |
域\用户名 |
<identity impersonate="false"/> |
HttpContext |
域\用户名 |
<identity impersonate="true"/> |
HttpContext |
用户提供的名称 |
<identity impersonate="false"/> |
HttpContext |
用户提供的名称 |
以上各表说明了在 IIS 身份验证设置的范围内,从保存 IPrincipal 和/或 IIdentity 对象的每个变量中获取的结果标识。表中使用了以下缩写词:
? |
HttpContext = HttpContext.Current.User,它返回包含当前 Web 请求的安全信息的 IPrincipal 对象。这是经身份验证的 Web 客户端。 |
? |
WindowsIdentity = WindowsIdentity.GetCurrent(),它返回当前执行的 Win32 线程的安全性上下文的标识。 |
? |
Thread = Thread.CurrentPrincipal,它返回当前执行的 .NET 线程(在 Win32 线程之上)的主体。 |
(2)、<identity impersonate="true" userName="Account" password="Password"/>
这种方式就直接设置所扮演的固定用户身份
第(2)种扮演方法将把password明文的写在Web.Config里,很不安全
PS1:微软不推荐使用扮演,无论扮演哪个帐号,一方面是安全性问题(被扮演的帐号可能有一些程序并不需要的多余权限,可能被利用),另一方面是可伸缩性问题(Scalability),因为在访问SQL Server等资源时,无法利用连接池等手段。
PS2:在\%windows%\Microsoft.NET\Framework\Version\Config目录中找到machine.config文件,其中有一个<processModel>的tag:
<processModel enable="true" ... userName="machine" password="AutoGenerate" ... />
其中的userName="machine"就是指定使用本机ASPNET帐号(.\ASPNET)作为ASP.NET工作进程的默认账号。
这个默认帐号是可以修改的,如果开发人员将userName修改为一个域用户帐号:
<system.web>
<processModel enable="true" userName="domain\user" password="password"/>
</system.web>
那么ASP.NET工作进程的身份就变成了domain\user。只要这个域用户帐号拥有需要的权限,那么machine.config所在机器上所有ASP.NET程序都可以访问域中其他服务器的资源,包括存取用网络共享路径指定的文件。
如果指定userName="system",那么ASP.NET程序将以LocalSystem身份运行,可以存取几乎所有本地资源,因此非常危险!
无论machine.config指定哪个默认帐号,这个默认帐号都可以被应用程序的web.config设置的Impersonation覆盖,即特定应用程序可以以其他身份运行。
关于 web.config impersonate 帐号模拟
标签:word 集成 基本 推荐 www intern frame 浏览器 结果
原文地址:https://www.cnblogs.com/dragon2017/p/10337679.html