В чем разница между получением WindowsPrincipal из WindowsIdentity и Thread.CurrentPrincipal?C#

Место общения программистов C#
Anonymous
В чем разница между получением WindowsPrincipal из WindowsIdentity и Thread.CurrentPrincipal?

Сообщение Anonymous »

Я пытаюсь выяснить, почему безопасность на основе атрибутов не работает так, как я ожидал в WCF, и подозреваю, что это может быть связано со следующим:
AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);

var identity = new WindowsIdentity("ksarfo");
var principal = new WindowsPrincipal(identity);
Console.WriteLine("\nChecking whether current user [" + identity.Name + "] is member of [" + groupName + "]");
Console.WriteLine(principal.IsInRole(groupName)); // returns true

principal = (WindowsPrincipal)Thread.CurrentPrincipal;
identity = (WindowsIdentity) principal.Identity;
Console.WriteLine("\nChecking whether current user [" + identity.Name + "] is member of [" + groupName + "]");
Console.WriteLine(principal.IsInRole(groupName)); // returns false

Я не понимаю, почему результаты при вызове функции различаются:
principal.IsInRole(groupName)

Для полноты картины точка, в которой код фактически дает сбой, находится здесь:
PrincipalPermission(SecurityAction.Demand, Role = "PortfolioManager")]


Подробнее здесь: https://stackoverflow.com/questions/456 ... identity-a

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