Ich habe eine Reihe von Microservices, auf die nur extern über ein API-Gateway zugegriffen werden kann.
Mein API-Gateway ist als OAuth-Ressource eingerichtet und überprüft das Token (Überprüft die Signatur usw.), bevor die Anforderung an einen oder mehrere Mikrodienste weitergeleitet wird.
Während meine Microservices das Token benötigen, um Bereiche und Ansprüche zu überprüfen, muss dieser Service jetzt auch das Token validieren?
Es scheint ein bisschen übertrieben, aber ich kann online keinen Rat zu diesem Szenario finden.
Ist die Validierung des Tokens am API-Gateway gut genug? Oder ist es empfehlenswert, es später erneut zu validieren?
microservices
fml
quelle
quelle
I cannot find any advice online about this scenario.
Weil es von mehreren Faktoren abhängt, die von Projekt zu Projekt variieren. Wahrscheinlich brauchen sie es in den meisten Entwicklungen, die behaupten, MS-Architektur zu sein, nicht. Darüber hinaus sollte es in solchen Architekturen einen Authentifizierungsserver geben, der dies anstelle der Dienste (und natürlich anstelle des Gateways) ausführt. Ist der Authentifizierungsserver, der die Anforderung weiterleiten lässt oder nicht.Antworten:
Wenn interne Anrufe das Gateway umgehen können, überprüfen Sie entweder das Token in jedem Mikrodienst oder zwingen Sie alle internen und externen Anrufe, das Gateway zu durchlaufen.
Persönlich würde ich auch internen Anrufen nicht vertrauen. Lassen Sie sie das Gateway durchlaufen, bis der Datenverkehr über Firewall-Regeln begrenzt wird. Wissen, wer mit wem spricht und warum. Dies hilft, Ihre Angriffsfläche zu begrenzen, falls jemand jemals Ihr Netzwerk verletzt.
Dies führt zwar zu einem einzigen Fehlerpunkt, dieses Risiko kann jedoch durch Lastausgleichsserver und das Vorhandensein von Failover-Servern bei katastrophalen Problemen gemindert werden.
Wenn andererseits jeder Dienst das Token validiert und sich etwas am Validierungsprozess ändert, müssen Sie N + 1-Dienste aktualisieren.
quelle