BISSecurity: mudanças entre as edições
Criou página com 'O serviço de BISSecurity tem a finalidade de facilitar e centralizar o controle de acesso de usuários no sistema. == Chaves de Acesso == O controle de acesso é gerenciad...' |
|||
Linha 57: | Linha 57: | ||
== Controle de Acesso à Interface do Usuário (UI) == | == Controle de Acesso à Interface do Usuário (UI) == | ||
O Controle de acesso à interface deve ser definido por cada tipo de interface criada. A | O Controle de acesso à interface deve ser definido por cada tipo de interface criada. A BISCorePresLib oferece métodos na sua class [[BISUI]] que simplificam a verificação de acesso do usuário. |
Edição das 23h10min de 23 de março de 2015
O serviço de BISSecurity tem a finalidade de facilitar e centralizar o controle de acesso de usuários no sistema.
Chaves de Acesso
O controle de acesso é gerenciado por "chaves" de acesso. Essas chaves são cadeias de caracteres (strings) únicas no sistema.
![]() |
|
![]() |
|
Qualquer plugin pode gerar suas próprias chaves de acesso livremente, para isso basta criar a hierarquia das chaves e devolver através da interface de implementação do CorePlugin. Uma vez que essas chaves foram passadas ao BISCore elas estão prontas para sem usadas. As chaves tornam-se disponíveis na tela de definição de acessos do Grupo de Segurança.
Chaves de Acesso à Objetos
Por algumas vezes além definir o acesso do usuário à uma tela ou função, queremos que um determinado usuário tenha acesso à um objeto mas não a outro. Por exemplo, desejamos que um determinado usuário tenha acesso para fazer lançamentos em uma "conta caixa" que ele controla, mas não a fazer lançamentos em outras contas. Ver o saldo de uma determinada conta, mas não à outras. Para resolver esse tipo de acesso o plugin deve criar as chaves de forma dinâmica e devolve-las junto com a hierarquia de chaves.
As chaves dinâmicas devem seguir as seguintes regras:
- Chaves de um mesmo tipo de objeto devem ter sempre a mesma 'key', ou identificador de chave, a única diferença entre elas é o ID do objeto que é passado em cada chave;
- Chaves de um determinado tipo devem ser todas filhas de uma mesma chave pai do tipo 'genérica';
- Nada impede que as chaves dinâmicas tenham chaves filhas, mas devem ser todas dinâmicas também;
![]() |
|
![]() |
|
Usuários e Grupos de Acesso
O BIS suporta a criação de usuários de acesso ao sistema e a Criação de Grupos de Acesso. Todas as permissões de acesso devem ser definidas em um grupo, por isso chamado de grupo de acesso. Uma vez definidos os acessos no grupo, devem ser colocados os usuários para que estes ganhem o acesso.
O BIS não permite definir acessos diretamente no usuário. Acreditamos que a definição de acesso no usuário conduza o usuário a erros e definição de permissões erradas, já que teria que redefinir os acessos toda vez que um novo usuário é criado.
Controle de Acesso à Métodos do Fachada
Embora ainda não implementado, o BISCore deve oferecer em breve uma maneira de garantir que métodos do core só possam ser chamados com uma autenticação de usuário definida durante a chamada. Com os seguintes requisitos:
- Essa autenticação deve ser transparente e fora da assinatura do método, se for por JNDI passar a autenticação por propriedades do ambiente na chamada, por webservice exigir a autenticação prevista no serviço, ou em algum objeto externo que encapsule a mensagem a ser passada no método. Usar as especificações do serviço de NFe para exemplo;
- Permitir que as chaves de acesso para chamada do método sejam definidas como annotations no método. O BISInterceptor pode verificar a permissão antes de chamar o método. Quanto as chaves de objeto, talvez não seja possível fazer a validação através de annotations.
A definição de chaves de acessos para chamar os métodos da fachada são importantes pois mesmo que as UI implementem e já restrinjam o acesso dos usuários, nada impede que um acesso direto à fachada por outro sistema ou por algum tipo de "ataque" estrague ou tenha acesso a dados indevidos.
Controle de Acesso à Interface do Usuário (UI)
O Controle de acesso à interface deve ser definido por cada tipo de interface criada. A BISCorePresLib oferece métodos na sua class BISUI que simplificam a verificação de acesso do usuário.