Членство в ASP.NET — какой пользователь проходит проверку подлинности, а какой — олицетворяется?

Я немного запутался, пытаясь выяснить, как работают ActiveDirectory и членство в ASP.NET... Я создал новый проект 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. В чем разница между аутентификацией и олицетворением?


person Ropstah    schedule 14.05.2009    source источник


Ответы (1)


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

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

person Mark Dickinson    schedule 14.05.2009
comment
Аутентификация больше связана с ASP.NET, а олицетворение больше связано с IIS, или это полная ерунда? - person Ropstah; 14.05.2009
comment
Я только что столкнулся со своей первой проблемой... Я только что переместил веб-сайт на свой локальный сервер IIS. Однако автоматический вход в систему больше не работает... User.Identity.Name() пуст...? Является ли это неправильной настройкой Web.Config или мне следует установить IIS? (какие настройки встроенного веб-сервера для VS2008 имеют те, которые не установлены в IIS? - person Ropstah; 14.05.2009
comment
Насколько я понимаю, олицетворение - это то, как приложения (веб-приложения или что-то еще) используют ресурсы через IIS. - person Mark Dickinson; 14.05.2009
comment
Я не совсем уверен, почему вы хотели бы иметь это. Не было бы лучше с анонимным доступом, а не с автоматическим входом в систему? - person Mark Dickinson; 14.05.2009
comment
Ну, вам действительно нужно знать личность только в том случае, если вы используете какую-то область сайта, для которой требуется вошедший в систему пользователь. Если вы, например, используете элемент управления asp:Login, о многом позаботятся за вас. - person Mark Dickinson; 14.05.2009
comment
А, спасибо. Я понял, что могу использовать Windows Identity (это для интрасети). Это также позволяет мне проверить isInRole(). Я запрошу разрешение на добавление/удаление пользовательских групп на сервере, чтобы я мог управлять ролями. Могу ли я по-прежнему использовать компоненты .NET по умолчанию (например, профиль) с этим подходом (режим аутентификации = нет)? - person Ropstah; 14.05.2009
comment
На самом деле это не работает так, как ожидалось, я думаю, что это все еще нехватка знаний об этой проблеме. Я начинаю новый вопрос для этого .. Спасибо - person Ropstah; 14.05.2009