Asp.net IIS Express-临时模拟经过身份验证的用户

Asp.net IIS Express-临时模拟经过身份验证的用户,asp.net,security,iis-express,Asp.net,Security,Iis Express,根据这份文件: 我在web.config中设置了以下内容 <authentication mode="Windows" /> <identity impersonate="false" /> 文件夹d:\p被设置为只允许调用方帐户访问,这在DOS中测试时很好,但从我的web服务,它可以访问,我想这是因为线程在我开始模拟之前就拥有调用方的安全上下文 更奇怪的是,当我模仿的时候,我突然失去了接触它的机会 我将在适当的IIS7.5服务器上创建一个测试项目,看看这是否是IIS

根据这份文件:

我在web.config中设置了以下内容

<authentication mode="Windows" />
<identity impersonate="false" />
文件夹d:\p被设置为只允许调用方帐户访问,这在DOS中测试时很好,但从我的web服务,它可以访问,我想这是因为线程在我开始模拟之前就拥有调用方的安全上下文

更奇怪的是,当我模仿的时候,我突然失去了接触它的机会

我将在适当的IIS7.5服务器上创建一个测试项目,看看这是否是IISExpress中的一个bug

更新2 现有测试的问题已经解决了一半。我删除了对文件夹的权限,但文件本身仍然有一些权限,而.NET访问文件而不遍历文件夹的方式意味着它仍然可以访问它

现在我明白了

b == false // as expected.
...
b == false // unexpected, after impersonation I should be able to see this file.
我希望模拟能让我进入,但事实并非如此

更新3 我已经放弃了。模拟不起作用,我只能假设它是一个网络策略或一些无法发现的隐藏设置。

明白了。有点

string n1 = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
string n2 = System.Threading.Thread.CurrentPrincipal.Identity.Name;
n1=进程标识 n2=呼叫者的身份

线程的安全上下文具有调用方的标识,这是我没有预料到的。我原以为线程会有流程的上下文,但它显然不是这样工作的

我现在遇到了一个有趣的情况,当我在呼叫者WindowsIdentity上调用.Impersonate时,我仍然无法访问为呼叫帐户许可的本地文件,但我会解决这个问题并更新我的答案


请参阅相关更新

,MSDN文档适用于旧版本的IIS。您是否遵循了以下步骤:?有趣的是,原始文档建议我应该禁用模拟,事实确实如此,这很有意义,因为我只需要调用者的Windows Id,以便在需要时使用它调用模拟。在我几年前编写的另一个ASMX服务中,我已经将模拟设置为true,并提供了一些服务帐户凭据,这让我想知道当时是否遇到了相同的问题!
b == false // as expected.
...
b == false // unexpected, after impersonation I should be able to see this file.
string n1 = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
string n2 = System.Threading.Thread.CurrentPrincipal.Identity.Name;