Разрешение для пользователя IIS проверять локальные группыC#

Место общения программистов C#
Anonymous
 Разрешение для пользователя IIS проверять локальные группы

Сообщение Anonymous »

В .net 8 у меня есть функция, чтобы проверить, принадлежит ли пользователь локальной группе, чтобы разрешить контроллеры и методы: < /p>

Код: Выделить всё

public static bool IsUserInLocalGroup(string userName, string groupName)
{
using (PrincipalContext pc = new PrincipalContext(ContextType.Machine))
{
using (GroupPrincipal group = GroupPrincipal.FindByIdentity(pc, groupName))
{
if (group != null)
{
return group.GetMembers(true).Any(m => m.SamAccountName.Equals(userName, StringComparison.OrdinalIgnoreCase));
}
}
}

return false;
}
< /code>
он отлично работает в режиме отладки, но после публикации в производстве IIS он не удается с ошибкой < /p>

Сетевой путь не был найден < /p>
< /blockquote>
Я думаю, что пользователь, который запускает приложение в IIS, не имеет разрешения на проверку локальных групп, поэтому я изменил личность с ApplicationPoolidentity 
To Localsystem , но он все еще не работает.
Есть ли что -нибудь еще, что мне нужно сделать? Любая помощь для решения этой проблемы будет оценена.

Код: Выделить всё

builder.Services.AddAuthorization(options =>
{
options.AddPolicy("Admin", policy =>
policy.RequireAssertion(context =>
{
try
{
var userName = context.User.Identity?.Name?.Split('\\').Last();
return LocalGroupHelper.IsUserInLocalGroup(userName, "rWork-Admin");
}
catch (Exception ex)
{
Console.WriteLine($"[ERROR]: {ex.Message} \n {ex.StackTrace}");
File.AppendAllText("logs/error_log.txt", $"[{DateTime.Now}] {ex.Message} \n {ex.StackTrace}\n");
return false;
}

}));
});
Тогда я авторизую свои контроллеры и методы с помощью [Authorize (police = "admin")]

Подробнее здесь: https://stackoverflow.com/questions/794 ... cal-groups

Вернуться в «C#»