Я прочитал несколько вопросов по этой теме, например здесь, здесь, здесь и здесь; но ни один из них не обеспечил рабочего решения в моем случае.
Что я хочу сделать:
Внедрить проверку подлинности 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".
Большинство всего, что я нахожу в этой теме, очень просты для выполнения того, что я пытаюсь сделать, но я явно что-то пропустил.