Вот фон. У меня был проект .NET MVC v1.0, который я пытался защитить с помощью режима аутентификации Windows. Поэтому я установил для web.config:
<authentication mode="Windows" />
А затем вошел в мой контроллер и сделал следующее:
[Authorize(Roles="IT")]
public class LicenseController : Controller
В нашей эры у нас есть группа, которая называется "IT", и я, как и многие другие, принадлежу к этой группе. Как только я это установил, я начал сеанс отладки и попытался выполнить любое из действий в этом контроллере, и меня встретил 401. Я искал высоко и низко, ища где-то, что я облажался и не мог найти ничего неправильно. Через некоторое время я решил попробовать изменить «Авторизировать» для конкретного пользователя, посмотреть, сработало ли это. Поэтому я изменил это на следующее:
[Authorize(Users="domain\\tnederveld")]
И низко и вот, что сработало. Поэтому я пошел и добавил другую группу, членом которой я являлся, и вынул утверждение авторизации пользователей, и это сработало. Я начал изучать различия между двумя группами AD, и единственное, что отличалось, было то, что во второй группе я попробовал «Имя группы (до Windows 2000):» было одинаковым. «Группа ИТ» «Имя группы (до Windows 2000):» была «ИТ-партнеры». Поэтому я попытался изменить утверждение авторизации на:
[Authorize(Roles="IT Associates")]
И это начало работать. Я точно подумал, что это проблема MVC, поэтому я попробовал ее в обычном проекте Web Forms и столкнулся с той же проблемой.
Настоящим кикером является то, что при использовании UserPrincipal, который является частью System.DirectoryServices.AccountManagement, он возвращает группу "IT" при использовании метода .GetGroups ().
Почему это происходит?