Funções de usuário não RBAC e sistema de permissões: uma função com propriedades

Estamos atualmenteconcepção a Funções de usuário e sistema de permissões em nosso aplicativo Web (ASP.NET), e parece que temos várioscasos estenão serve dentro do clássicoControle de acesso baseado em função (RBAC). Vou postar várias perguntas, cada uma dedicada a um caso específico. Esta é a minha segunda pergunta (a primeira pergunta está aqui:Funções de usuário não RBAC e sistema de permissões: verificando a cidade do usuário)

Temos o seguinte caso: precisamos implementar umFunção de gerente em nosso aplicativo da web. No entanto, um gerente podepertencem a uma ou várias empresas (em um grande grupo de empresas para as quais estamos criando este aplicativo da web). Digamos, pode haver "Gerente das empresas A e B", "Gerente da empresa C" etc.

Dependendo das empresas às quais o gerente pertence, ele temAcesso para certas operações: por exemplo, ele pode se comunicar com clientes apenas das empresas às quais ele pertence. Ou seja, o “gerente das empresas A e B” só pode ter contatos com clientes das empresas A e B, e não com os da empresa C. Ele também pode visualizar as páginas de detalhes dos clientes das empresas A e B e não da C, etc. .

Parece que esse caso se enquadra no RBAC. No entanto, esse não é realmente o caso. Precisamos criar umClasse ManagerRole que terá umPropriedade das empresas - isto é, não será apenas um papel como uma coleção de permissões (como no RBAC clássico), mas umpapel com propriedades!

Este foi apenas um exemplo de uma função com propriedades. Haverá outros: por exemplo, umFunção de administrador isso também pertencerá a várias empresas e também terá outras propriedades personalizadas.

Isso significa que teremos uma hierarquia ou classes de funções:


class Role – base class  
class ManagerRole : Role  
    List Companies  
class AdministratorRole : Role  
    List Companies  
    Other properties

Investigamos o RBAC puro e sua implementação em vários sistemas, enão encontrou sistemas apresentando umhierarquia ou funções, cada um com propriedades personalizadas. No RBAC, as funções são apenas coleções de permissões.

Podemos modelar nossos casos usandopermissão com propriedades, como ManagerPermission, AdministratorPermission, mas isso tem muitas desvantagens, o principal é que não poderemos atribuir uma função como "Gerente das empresas A e B" a um usuário diretamente, mas precisaremos criar uma função que contenha um Permissão do gerente para as empresas A e B ... Além disso, um "gerente" parece mais um "papel" (posição na empresa) do que uma "permissão" do ponto de vista linguístico.

Ficaria grato por quaisquer idéias sobre este assunto, bem como qualquer experiência neste campo!

Obrigado.

questionAnswers(4)

yourAnswerToTheQuestion