Подтвердить что ты не робот

Использование аутентификации Windows с активными группами каталогов в качестве ролей

Я прочитал несколько вопросов по этой теме, например здесь, здесь, здесь и здесь; но ни один из них не обеспечил рабочего решения в моем случае.

Что я хочу сделать:

Внедрить проверку подлинности Windows для веб-приложения, которое используется только нашими собственными сотрудниками. Таким образом, им не нужно будет входить в приложение, но уже пройти аутентификацию путем входа в окна.

Кроме того, мне нужно ограничить определенные области приложения на основе групп безопасности Active Directory, которым может быть назначен пользователь.

Итак, я хочу, чтобы украсить Controllers/Actions с помощью

[Authorize(Roles="SomeRole")]

Что я пробовал:

У меня

<authentication mode="Windows" />

в моем web.config. И я добавил несколько перестановок <roleManager>, которые были найдены в некоторых сообщениях, связанных выше. В настоящее время у меня есть этот менеджер ролей

<roleManager defaultProvider="WindowsProvider"
  enabled="true"
  cacheRolesInCookie="false">
      <providers>
        <add
          name="WindowsProvider"
          type="System.Web.Security.WindowsTokenRoleProvider" />
      </providers>
    </roleManager>

как указано в этот пост.

Как бы то ни было, если я украшаю контроллер с помощью [Authorize], я могу получить к нему доступ.

Однако:

В моих пользовательских настройках в сети я вижу, что я являюсь частью группы безопасности AD под названием "IT". Но если я украшу тот же контроллер с помощью [Authorize(Roles="IT")], я получаю пустой экран, который обслуживается сервером разработки asp.net, для 401 не разрешен. Это неожиданно. Я бы подумал, что я должен иметь возможность просматривать страницу, поскольку я вошел в систему в Windows и являюсь частью группы "IT".

Большинство всего, что я нахожу в этой теме, очень просты для выполнения того, что я пытаюсь сделать, но я явно что-то пропустил.

4b9b3361

Ответ 1

Для dev я использую IISExpress с свойствами сервера разработки проекта MVC, настроенными так, чтобы Анонимная аутентификация отключена и включена проверка подлинности Windows. Веб-конфигурация развертывается с использованием нашего сервера сборки TFS для тестирования и выпуска серверов, для которых аутентификация также настроена, как указано выше, и также работает в этих местах.

В моем web.config у меня есть.

  <system.web> 
....
       <authentication mode="Windows" />
        <authorization>
          <deny users="?" />
        </authorization>
        <roleManager enabled="true" defaultProvider="AspNetWindowsTokenRoleProvider">
          <providers>
            <clear />
            <add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" />
          </providers>
        </roleManager>
....

    </system.web>

Я могу использовать

[Authorize(Roles = @"DOMAIN\ADGroup")]
Public ActionResult Index()
{...}

или

 public ActionResult Index()
        {
            var User = System.Web.HttpContext.Current.User;
            if (User.IsInRole("DOMAIN\\ADGroup"))
            {
                return RedirectToAction("IRSAdmin");
            }
            return View();
        }

После того, как я запомню выход из системы и вернусь назад, так было применено разрешение, которое было присвоено группе AD.