В чем разница между получением 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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