Planejamos refatorar o sistema da empresa em um sistema baseado em microsserviço. Esses microsserviços serão usados por nossos próprios aplicativos internos da empresa e por parceiros de terceiros, se necessário. Um para reserva, outro para produtos etc.
Não temos certeza de como lidar com funções e escopos. A idéia é criar três funções básicas de usuário, como administradores, agentes e usuários finais, e permitir que os aplicativos do consumidor ajustem os escopos, se necessário.
- Os administradores podem criar, atualizar, ler e excluir todos os recursos por padrão (para a empresa).
- Os agentes podem criar, atualizar e ler dados para sua empresa.
- Os usuários finais podem criar, atualizar, excluir e ler dados, mas não podem acessar os mesmos terminais que agentes ou administradores. Eles também poderão criar ou modificar dados, mas não no mesmo nível que agentes ou administradores. Por exemplo, os usuários finais podem atualizar ou ler as informações da conta, assim como o agente poderá fazer isso por eles, mas não podem ver ou atualizar as notas do administrador.
Digamos que os agentes por padrão possam criar, ler e atualizar cada recurso para sua empresa e esse seja o escopo máximo que pode ser solicitado para seu token / sessão, mas os desenvolvedores do aplicativo cliente (consumidor da API) decidiram que um de seus agentes pode leia e crie apenas alguns recursos.
É uma prática melhor lidar com isso em nossa segurança interna e permitir que eles gravem esses dados em nosso banco de dados ou que os clientes manuseiem internamente solicitando um token com escopo menor e que escrevam qual agente terá qual escopo em seu banco de dados ? Dessa forma, teríamos que rastrear apenas escopos de token.
A desvantagem disso é que nossa equipe também precisará criar mecanismos de acesso aprimorados em nossos aplicativos internos.
Com esse pensamento, os microsserviços e seu sistema de autorização não devem ser incomodados com as necessidades dos clientes, porque eles são apenas consumidores e não fazem parte do sistema (mesmo que alguns desses consumidores sejam nossos próprios aplicativos internos)?
Esta delegação é uma boa abordagem?
payment:[read]
, vendedor tempayment: [create]
. Você agrega permissões nesse caso?