Wir planen, unser Unternehmenssystem in ein auf Mikroservices basierendes System umzugestalten. Diese Mikrodienste werden von unseren firmeninternen Anwendungen und bei Bedarf von Drittanbietern genutzt. Eins für Buchung, eins für Produkte etc.
Wir sind uns nicht sicher, wie wir mit Rollen und Bereichen umgehen sollen. Die Idee ist, drei grundlegende Benutzerrollen wie Admins, Agents und Endbenutzer zu erstellen und den Consumer-Apps bei Bedarf die Feinabstimmung der Bereiche zu ermöglichen.
- Administratoren können standardmäßig alle Ressourcen (für ihr Unternehmen) erstellen, aktualisieren, lesen und löschen.
- Agenten können Daten für ihr Unternehmen erstellen, aktualisieren und lesen.
- Endbenutzer können Daten erstellen, aktualisieren, löschen und lesen, jedoch nicht auf dieselben Endpunkte wie Agenten oder Administratoren zugreifen. Sie können auch Daten erstellen oder ändern, nur nicht auf derselben Ebene wie Agenten oder Administratoren. Beispielsweise können Endbenutzer ihre Kontoinformationen aktualisieren oder lesen, genauso wie der Agent dies für sie tun kann, sie können jedoch keine Administratornotizen anzeigen oder aktualisieren.
Angenommen, Agenten können standardmäßig jede Ressource für ihr Unternehmen erstellen, lesen und aktualisieren. Dies ist der maximale Bereich, der für ihr Token / ihre Sitzung angefordert werden kann. Entwickler von Clientanwendungen (API-Consumer-Anwendungen) haben jedoch entschieden, dass einer ihrer Agenten dies kann Lesen und erstellen Sie nur bestimmte Ressourcen.
Ist es eine bessere Praxis, dies in unserer internen Sicherheit zu behandeln und diese Daten in unsere Datenbank schreiben zu lassen, oder lassen Sie die Clients dies intern tun, indem Sie ein Token mit geringerem Umfang anfordern, und schreiben, welcher Agent welchen Umfang in ihrer Datenbank hat ? Auf diese Weise müssten wir nur Token-Bereiche verfolgen.
Der Nachteil dabei ist, dass unser Team auch in unseren internen Anwendungen genau abgestimmte Zugriffsmechanismen erstellen muss.
Mit dieser Denkweise sollten Mikrodienste und ihr Autorisierungssystem nicht mit den Kundenbedürfnissen belastet werden, da sie nur Verbraucher sind und nicht Teil des Systems (auch wenn einige dieser Verbraucher unsere eigenen internen Apps sind).
Ist diese Delegation ein guter Ansatz?
payment:[read]
, hat Verkäuferpayment: [create]
. Sammeln Sie in diesem Fall Berechtigungen?