Dificuldade com Spring Security

Bom vamos lá…

Eu tenho um sistema, ode o spring security funciona perfeitamente utilizando o RBAC…

Só que vamos lá…

Vamos ao problema:

O sistema tem 3 clientes cadastrados, todos eles clientes utilizam a mesma hierarquia de ROLES.

E o sistema tem algumas funções, por exemplo CRUD de fornecedores, CRUD de eventos, e CRUD de produtos.

O cliente 1 - só quer utilizar o CRUD de fornecedores.
O cliente 2 - quer o CRUD de fornecedores e de produtos
O cliente 3 - quer utilizar todos os CRUDS.

Ou seja, antes de validar as ROLES de acesso, eu teria que validar se o cliente tem acesso àquele CRUD…

Eu pensei, e pesquisei várias soluções, não achei nenhuma que atendesse a esse assunto.

Estou até testando o tal do jCasbin, que li que da para fazer MUITA coisa nele…mais ainda não consegui entender muito bem ele.

Segue a imagem que fiz tentando exemplificar o caso.

Faz muito tempo que não uso o Spring Security, mas no passado quando eu usei isso, a forma de controlar isso que meu time fez na época foi mapear os acessos por recurso da aplicação, ou seja, deixar as roles mais granulares.

Seguindo seu exemplo seria algo parecido com isso:
ROLE_EVENTO_CREATE
ROLE_EVENTO_UPDATE

ROLE_PRODUTO_CREATE
ROLE_PRODUTO_DELETE

As atribuições de roles para cada usuário era feita através de grupos de acesso, cada grupo tem acessos específicos, exemplo: o grupo admin pode fazer todas as operações para todos os recursos, mas um grupo funcionário pode fazer somente algumas operações.

Poderia ainda generalizar um pouco mais as roles e usar a atribuição e validação através scopes, por exemplo, para um ROLE_EVENTO, poderiam haver os scopes: create, read, update e delete.

Isso funcionou…muito obrigado.