Nous prévoyons de refaçonner notre système d'entreprise en un système basé sur des micro-services. Ces micro-services seront utilisés par nos propres applications internes à l'entreprise et par des partenaires tiers si nécessaire. Un pour la réservation, un pour les produits, etc.
Nous ne savons pas comment gérer les rôles et les étendues. L'idée est de créer 3 rôles d'utilisateur de base tels que les administrateurs, les agents et les utilisateurs finaux et de laisser les applications grand public affiner les portées si nécessaire.
- Les administrateurs peuvent créer, mettre à jour, lire et supprimer toutes les ressources par défaut (pour leur entreprise).
- Les agents peuvent créer, mettre à jour et lire des données pour leur entreprise.
- Les utilisateurs finaux peuvent créer, mettre à jour, supprimer et lire des données, mais ne peuvent pas accéder aux mêmes points de terminaison que les agents ou les administrateurs. Ils pourront également créer ou modifier des données, mais pas au même niveau que les agents ou les administrateurs. Par exemple, les utilisateurs finaux peuvent mettre à jour ou lire leurs informations de compte, tout comme l'agent pourra le faire pour eux, mais ils ne peuvent pas voir ou mettre à jour les notes d'administration.
Disons que les agents par défaut peuvent créer, lire et mettre à jour chaque ressource pour leur entreprise et que c'est leur portée maximale qui peut être demandée pour leur jeton / session, mais les développeurs de l'application client (consommateur d'API) ont décidé qu'un de leurs agents peut lire et créer uniquement certaines ressources.
Est-il préférable de gérer cela dans notre sécurité interne et de les laisser écrire ces données dans notre base de données, ou de laisser les clients gérer cela en interne en demandant un jeton avec une portée moindre, et de les laisser écrire quel agent aura quelle étendue dans leur base de données ? De cette façon, nous n'aurions à suivre que les portées de jetons.
L'inconvénient est que notre équipe devra également créer des mécanismes d'accès affinés dans nos applications internes.
Avec cette façon de penser, les micro-services et leur système d'autorisation ne devraient pas être dérangés par les besoins des clients, car ils ne sont que des consommateurs et ne font pas partie du système (même si certains de ces consommateurs sont nos propres applications internes)?
Cette délégation est-elle une bonne approche?
payment:[read]
, le vendeur apayment: [create]
. Agrégez-vous les autorisations dans ce cas?