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