Ich habe eine API, die ich über REST aussetze, und ich überlege, wo die Behörden Einschränkungen zu platzieren.
Ich habe gelesen, dass es eine Best Practice zum Sichern der Service-Schicht gibt, da es derjenige ist, der die Arbeit erledigt und Sie nicht wissen, wo es aufgerufen wird, aber ich bin mir nicht sicher, was die beste Vorgehensweise ist die WS-Schicht.
Ein Gedanke, den ich habe, ist, dass ich ein sehr feinkörniges Autorisierungsmodell auf der Serviceebene und ein sehr grobkörniges Autorisierungsmodell auf der WS-Ebene haben muss, um einerseits das DRY-Prinzip auf ein Minimum zu reduzieren, aber andererseits Vorstellung der Verteidigung in der Tiefe.Spring-Sicherheit, die die Service-Schicht, die Web-Service-Schicht oder beides sichert?
Beispiel:
Für die Users
Ressource gibt es eine UserWS
und ein UserService
. Administratoren können Benutzer erstellen/aktualisieren/löschen und Benutzer können über andere Benutzer lesen.
Angenommen die UserWS
ist an %root%/users
gebunden definiere ich eine intercept-url
für diese URL mit der ROLE_USER
Berechtigung, die nur sagt, dass Sie ein Benutzer sein müssen, um dorthin zu gelangen, aber die Service-Schicht selbst wird die spezifischen Behörden für die relevanten Methoden angeben.
Weitere Optionen sind:
Ort die gleichen Zulassungsanforderungen sowohl auf den Service und die WS-
Pro- Sie werden so früh wie möglich Eindringlinge herauszufiltern (und zum Beispiel speichern die Umwandlung von Parametern, wenn Sie Spring MVC)
Con- Vervielfältigung von Konfiguration verwenden ist ein Problem Wartung und ist anfällig für Fehler => SicherheitsproblemPlatz der authorizati nur auf dem WS-
Pro- so schnell wie möglich auswählen, wenn der WS auf Anforderungen comming
Con- Die Dienstschicht aus unterschiedlichen Kontexten verwendet werden könntePlatte der Zulassungsanforderungen nur auf den service-
pro- Keine Vervielfältigung
Con- Overhead erlaubt „unverblümt“ unfähige Anfrage an die Dienstschicht ankommt
Wäre wirklich ein Feedback über die Möglichkeiten schätzen
danke für Ihre Antwort, Aber wie ich schon sagte, wenn ich nur die gleichen Befugnisse auf beiden haben, dann ist es doppelte und anfällig für Fehler (daher Sicherheit Haftung). Angenommen, ich notiere die Service-Schicht, was sollte ich auf die WS legen und warum? Danke – Ittai
IMHO müssen Sie nur einen einzelnen Dienst haben, der die Logik hat und einen UI-Vertreter für diesen Service und einen WS Delegierten hat. Auf diese Weise müssen Sie nur den konkreten Service kommentieren. Im Allgemeinen müssen Sie, wenn Sie keine Duplikate haben wollen, die Komponente sichern, die die eigentliche Logik enthält. – Simeon