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