Я пытаюсь выяснить, почему безопасность на основе атрибутов не работает t работает так, как я ожидал, в 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")]
Помощь приветствуется.