Членство в ASP.NET. Какой RoleProvider использовать, чтобы User.IsInRole() проверял группы ActiveDirectory?

StackOverflow https://stackoverflow.com/questions/863080

Вопрос

На самом деле очень простой вопрос:

В настоящее время у меня отключен анонимный доступ к IIS, пользователи автоматически входят в систему, используя свою учетную запись Windows.Однако вызов User.IsInRole("Имя роли") возвращает false.Я дважды проверил User.Identity.Name() и «Имя роли», и он должен вернуть true.

В настоящее время у меня есть это в моем Web.Config:

ОБНОВЛЯТЬ
Я вызывал User.IsInRole("Имя роли"), где я должен был вызвать User.IsInRole("DOMAIN ole name")

Однако мне все же хотелось бы знать, нужна ли вообще запись <membership>?

Что мне следует изменить?(и нужна ли вообще запись <membership>?)

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


<membership defaultProvider="ADMembershipProvider">
  <providers>
    <clear/>
      <add
         name="ADMembershipProvider"
         type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
         connectionStringName="ADConnectionString"
         connectionUsername="XXX\specialAdUser"
         connectionPassword="xx"
         />
  </providers>
</membership>

<roleManager enabled="true" defaultProvider="WindowsProvider">
  <providers>
    <clear />
      <add name="WindowsProvider" type="System.Web.Security.WindowsTokenRoleProvider" />
  </providers>
</roleManager>
Это было полезно?

Решение

Если вы используете аутентификацию Windows, IsInRole будет работать без дополнительной настройки, если вы не забудете добавить к роли префикс домена, т.е.ДОМЕН\имя группы.

Кроме того, вы можете использовать свою собственную роль (каламбур) и использовать аутентификацию Windows, например, для поставщика ролей SQL, если вы не хотите, чтобы ваш AD был засорен настраиваемыми ролями для вашего приложения.

Так что нет, вам вообще не нужна конфигурация провайдера.

Другие советы

Поставщик членства здесь не поможет.ActiveDirectoryMembershipProvider кажется, лучше всего (только?) подходит для аутентификации с помощью форм.

Почти уверен, что единственное, что вам нужно, это группа roleManager (вместе с настройкой базового режима аутентификации = 'windows')

В стандартной комплектации нет поставщика ролей для прямого использования Active Directory.Вы можете использовать таблицу ролей в системе членства и ролей ASP.NET или диспетчер авторизации (AzMan).

Есть статья о КодПроект который показывает реализацию поставщика ролей, работающего с Active Directory, с полным исходным кодом.Может быть, это поможет?

Марк

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top