Я пишу код ASP.NET для работы во внутренней сети, где будет использоваться проверка подлинности Windows. Некоторые операции потребуют от меня проверки членства в группе других пользователей (не текущего пользователя).
ПРИМЕЧАНИЕ. Я НЕ пытаюсь выдать себя за эту учетную запись или получить доступ к какой-либо информации в контексте этого другого пользователя. Просто пытаюсь выяснить, что это за пользователь для внутренней бизнес-логики.
Моей первой мыслью было использовать
new WindowsPrincipal(new WindowsIdentity("MACHINENAME\\username"))
.IsInRole("MACHINENAME\\Group1")
Однако конструктор WindowsIdentity завершается с ошибкой SecurityException «Предоставленное имя не является правильно сформированным именем учетной записи».
Если я удалю MACHINENAME\ из параметра, я получу другую ошибку: В настоящее время нет доступных серверов входа в систему для обслуживания запроса на вход.
Поставщик роли WindowsTokenRoleProvider явно работает только с текущим пользователем и не будет проверять учетные записи других пользователей.
Существуют ли ограничения безопасности для проверки ролей других пользователей? Будет ли иметь значение, если веб-сервер будет находиться в домене, а я проверяю учетные записи домена?
В конце концов, мне нужно, чтобы это работало в домене AD, но я бы предпочел решение, которое будет работать как с локальными учетными записями, так и с учетными записями AD.
Спасибо
ОБНОВЛЕНИЕ: теперь я смог протестировать это на домене - код работает в контексте AD, если я не использую доменное имя (проверить «имя пользователя» против «Группа1», а не «ДОМЕН\имя пользователя»). " против "ДОМЕН\Группа1")
Итак, как мне заставить это работать в контексте локальных пользователей и групп?