Режим аутентификации Windows в ASP.NET использует название группы Active Directory (предварительные Windows 2000)?

Вот фон. У меня был проект.NET MVC v1.0, что я пытался защитить его при помощи режима аутентификации Windows. Таким образом, я установил web.config на:

<authentication mode="Windows" />

И затем вошел в мой контроллер и сделал следующее:

[Authorize(Roles="IT")]
public class LicenseController : Controller

В AD у нас есть группа, названная "IT", и я - многие другие, имеют независимо эту группу. Как только я имел в распоряжении это, я запустил сеанс отладки и попытался идти в любое из действий в том контроллере, и я был встречен 401. Я ищу высокий и низкий поиск где-нибудь, что я завинтил пес и не мог найти ничто плохого. Через некоторое время борьбы я решил попытаться изменить "Авторизовывание" на определенного пользователя видение, если это работало. Таким образом, я изменил его на следующее:

[Authorize(Users="domain\\tnederveld")]

И низко и созерцают, который работал. Таким образом, я пошел и добавил другую группу, что я был членом и вынул пользователей, авторизовывают оператор, и это работало. Я начал изучать различия между двумя AD группами и единственной вещью, которая отличалась, был на второй группе, я попробовал "Название группы (предварительные Windows 2000)": было то же. Название группы "Групп "IT" (предварительные Windows 2000)": была "IT Associates". Таким образом, я пытался изменить авторизовать оператор на:

[Authorize(Roles="IT Associates")]

И это начало работать. Я думал наверняка, что это было проблемой MVC, так чтобы удостовериться, что я попробовал ее на обычном проекте Веб-форм и был, встречаются с той же проблемой.

Настоящая строка над заголовком то, что, когда Вы используете UserPrincipal, который является частью Системы. DirectoryServices. AccountManagement это возвращает группу "IT" при использовании.GetGroups () метод.

То, почему это, происходит?

9
задан marc_s 12 January 2010 в 05:14
поделиться

1 ответ

Вы Необходимо поддерживать различные имена вход в объявления:

  • Имя , как правило, атрибут CN - общее имя. Это часть «CN = XXX» в вашей строке LDAP. Вот это Это - и это то, что System.directoryservices.AccountManagement вернется - это наиболее распространенное имя «Active Directory»

  • Название «IT Associates» является предварительным Windows 2000 или SamaccountName - вещь Windows NT используется для использования до того, как было объявление - локальное имя пользователя и / или групповое имя (SAM = управление учетной записью безопасности или что-то в этом роде). Имя учетной записи SAM должно быть уникальным на домен - даже в огромном лесе ad в наши дни.

К сожалению, множество вызовов API Windows все еще основаны на том имени - поскольку они являются (и должны быть) обратно совместимы с более ранними версиями Windows. Система членства ASP.NET использует эти звонки и, таким образом, будут использовать вашу домен / tdederveld имя пользователя и IT Associates Group - это имена учетных записей SAM ваших объектов

не уверены Если есть много, вы можете с этим поделать - просто имейте в виду, что в рекламной среде любой из ваших пользователей или групп имеет множество «имен» - всегда очень ясно, о котором вы говорите!

Для подробного списка всех атрибутов рекламы см. В отличном веб-сайте Richard Mueller с Справочный материал Active Directory .

3
ответ дан 3 November 2019 в 08:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: