0

我有一个 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");
    }

}

是否可以对方法启用安全检查?

4

1 回答 1

0

我猜测 CreateNewUserx 是 AzMan 中的操作或任务,而不是角色。 AuthorizationStoreRoleProvider仅识别 AzMan 角色,而 PrincipalPermission 仅检查 IPrincipal 公开的角色。然而,这是使用 AzMan 的一种倒退方式,因为基于操作的授权机制的要点是允许用户可配置角色并允许应用程序只担心操作。

我建议您放弃对角色的要求,而只要求操作权限。使用这种方法,您将需要更改您的权限(和属性)或您的主体实现,或同时更改两者以了解 AzMan 操作。

于 2011-12-08T17:43:13.267 回答