Защитите метод класса, используя декларативную безопасность и Azman. - PullRequest
0 голосов
/ 08 декабря 2011

У меня есть служба wcf 4.0, я запускаю ее локально в IIS Express и использую azman для управления безопасностью.Я могу использовать декларативный синтаксис для защиты служб и предотвращения создания экземпляров классов в библиотеке классов.Однако когда я декорирую метод в классе, он не имеет никакого эффекта.

 [PrincipalPermission(SecurityAction.Demand, Role = "AdminRole")]  //THIS WORKS
public class MaintainUser
{
    [PrincipalPermission(SecurityAction.Demand, Role = "CreateNewUserx")] //THIS DOES NOT WORK
    public void CreateNewUser()
    {
        if (ViterraSecurity.VerifyAccess.HasOperation("CreateNewUserx", ViterraSecurity.VerifyAccess.BasisOperations.CreatUser))
        {
            return;
        }

        throw new AccessViolationException("CreateNewUser");
    }

}

Можно ли включить проверку безопасности для методов?

1 Ответ

0 голосов
/ 08 декабря 2011

Я предполагаю, что CreateNewUserx - это операция или задача в AzMan, а не роль. AuthorizationStoreRoleProvider распознает только роли AzMan, а PrincipalPermission проверяет только роли, предоставляемые IPrincipal. Однако это немного отсталый способ использования AzMan, поскольку основной смысл механизма авторизации на основе операций заключается в том, чтобы позволить ролям настраиваться пользователем и позволить приложению беспокоиться только об операциях.

Я бы порекомендовал отменить ваши требования к ролям в пользу требования только разрешения на работу. При таком подходе вам потребуется изменить либо ваше разрешение (и атрибут), либо вашу основную реализацию, либо и то, и другое, чтобы быть в курсе операций AzMan.

...