WCF PrincipalPermission с ролями, настройка для под-методов - PullRequest
1 голос
/ 20 августа 2011

Я хочу сохранить это как можно более простым, чтобы не публиковать какой-либо код, поскольку он, вероятно, просто запутает вещи.

Я реализовал безопасность в своем приложении, используя авторизацию на основе ролей WCF.

Предположим, у меня есть 4 метода на моем общедоступном интерфейсе

  • GetPerson
  • DeletePerson
  • UpdatePerson
  • GetSurnameAndForename

Я прикрепил

[PrincipalPermission(SecurityAction.Demand,Role="POWERUSER")]

к первым 3 и

[PrincipalPermission(SecurityAction.Demand,Role="GENERALUSER")]

к последнему.

Это отлично работает,и предотвращает доступ 'GENERALUSER' к первым трем методам.

Однако метод GetSurnameAndForename внутренне вызывает метод GetPerson, который завершается ошибкой.Я понимаю, почему это не удается, но есть ли предпочтительный способ разрешить GetSurnameAndForename вызывать GetPerson, не имея роли POWERUSER?

Единственный способ, которым я могу думать об этом, - это добавить дополнительную проверку в метод IsInRole дляпроверьте CallStack, чтобы увидеть, пришел ли этот вызов из внутреннего метода или внешнего вызова.Это решение работает, но оно не очень элегантно.

Ответы [ 2 ]

3 голосов
/ 20 августа 2011

Да, есть очень простое решение.Оберните логику, предложенную GetPerson, в закрытый метод и вызовите этот новый метод из GetPerson и GetSurnameAndForename.

2 голосов
/ 20 августа 2011

Пересекающиеся границы, защищенные основными атрибутами доступа, - это путь к катастрофе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...