Членство в ASP.NET. Какой пользователь прошел проверку подлинности, а какой - выдал себя за другого? - PullRequest
2 голосов
/ 14 мая 2009

Я немного запутался, пытаясь выяснить, как работают 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 Ответ

1 голос
/ 14 мая 2009

myuser - аутентифицированный пользователь в этом приложении, поэтому ваш CurrentPrincipal предоставляет вам MYDOMAIN / myuser. Приложение олицетворяет IUSR_WORKSTATION, когда оно использует ресурсы, такие как база данных, и представляет собой совершенно другую проблему.

Если вы перейдете в Project на панели инструментов и выберете Конфигурацию ASP.NET, откроется веб-сайт, который позволит вам получить доступ к этим настройкам и создать пользователей, роли и т. Д.

...