ASP.NET成员资格 - 哪个用户经过身份验证以及哪个用户被模拟?

时间:2009-05-14 10:56:26

标签: asp.net authentication active-directory asp.net-membership impersonation

在尝试了解ActiveDirectory和ASP.NET Membership如何工作时,我有点困惑......我创建了一个新的MVC项目并删除了AccountController / Views。我已经更改了Web.Config,以便它使用ActiveDirectory并根据用户当前的Windows登录自动验证用户:

的Web.Config

<authentication mode="Windows">
    <forms
    name=".ADAuthCookie"
    timeout="10" />
</authentication>

<membership defaultProvider="MyADMembershipProvider">
  <providers>
    <clear/>
      <add
         name="MyADMembershipProvider"
         type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
         connectionStringName="ADConnectionString"
         connectionUsername="MYDOMAIN\myuser"
         connectionPassword="xxx"
         />
  </providers>                 
</membership>

这很好用,因为我可以执行以下操作来获取用户的用户名:

User.Idenity.Name()  'Gives MYDOMAIN\myuser

观察以下内容,实际上让我感到困惑:

Threading.Thread.CurrentPrincipal.Identity.Name() 'Gives MYDOMAIN\myuser

1。线程标识不应该是IUSR_WORKSTATION或ASPNET_WP用户名吗?
2。身份验证和假冒之间有什么区别?

1 个答案:

答案 0 :(得分:1)

myuser是该应用程序上的Authenticated用户,这就是您的CurrentPrincipal为您提供MYDOMAIN / myuser的原因。当应用程序使用像数据库这样的资源时,它会模仿IUSR_WORKSTATION,这是一个完全不同的问题。

如果您转到工具栏上的Project,并选择ASP.NET Configuration,它将打开一个网站,允许您访问这些设置并创建用户,角色等。