In meiner Architektur habe ich mehrere interne Dienste, die miteinander kommunizieren müssen. Ich habe auch einen Identity Access Management Service, der Informationen über Benutzer, Rollen und (grobkörnige) Berechtigungen speichert.Bevorzugter Ansatz für Inter-Service-Kommunikation in Microservices/SOA
Komponenten (nicht erschöpfende Aufzählung):
- Service A
- Service B
- IAM Service
Anstatt Dienste A und B vollen Zugang miteinander über IP weißen Listen geben, Ich möchte, dass sie als Benutzer ausgeführt werden, die vom IAM-Dienst verwaltet werden. Die Dienste benötigen also eine Möglichkeit, die Rollen und Berechtigungen des anderen zu erfahren. Ich habe den folgenden Ansatz in Betracht gezogen:
Ich erstelle undurchsichtige API-Schlüssel für die Benutzer, unter denen die Dienste ausgeführt werden. Ich speichere sie bei jedem Service. Wenn Dienst A den Dienst B aufruft, übergibt er seinen API-Schlüssel. Dienst B ruft dann den IAM-Dienst auf, um den Schlüssel zu validieren und Informationen über die Rollen von Dienst A zu erfassen, bevor die Anforderung verarbeitet wird. Dienst B speichert seine Antworten vom IAM-Dienst, um die Chartiness zu reduzieren.
Ich habe Lösungen mit einem API-Gateway gesehen, aber dies setzt voraus, dass der Datenverkehr außerhalb des Netzwerks erfolgt. Ich möchte den internen Datenverkehr nicht nach außen umleiten, nur um opake Tokens in by-value JWTs umzuwandeln.
Was ist die Frage? –