2015-04-18 5 views
19

Ich entwickle eine REST-API mit Spring 4. Ich möchte einige der Endpunkte mit Spring Security sichern, aber basierend auf dem, was ich gelesen habe, kann dies entweder mit @EnableGlobalMethodSecurity oder @EnableWebSecurity getan werden. Leider, die Dokumentation, die ich für diese gefunden habe, erklären nicht klar, was sie tun (oder wie sie vergleichen). Wenn ich eine Spring-REST-API mit Authentifizierung und Autorisierung basierend auf Daten und Beziehungen, die in einer relationalen Standarddatenbank deklariert sind, sichern möchte, was ist die empfohlene Methode, um dies in Spring 4 zu erreichen?@EnableGlobalMethodSecurity vs @EnableWebSecurity

Antwort

19

EnableWebSecurity Konfiguration über HttpSecurity Bereitstellung der Konfiguration zur Verfügung stellen werden Sie mit <http></http>-Tag im XML-Konfiguration finden könnte, dann ist es können Sie Ihren Zugang zu konfigurieren, basierend auf Urls Muster, die Authentifizierungs-Endpunkte, Handler etc ...

EnableGlobalMethodSecurity bietet AOP Sicherheit auf Methoden, einige der Annotation wird es ermöglichen PreAuthorizePostAuthorize auch es hat Unterstützung für JSR-250. There is also more parameters in configuration for you

Für Ihre Bedürfnisse ist es besser, die beiden zu mischen. Mit REST können Sie alles, was Sie brauchen, nur mit @EnableWebSecurity erreichen, da HttpSecurity#antMatchers(HttpMethod,String...) Steuerelemente über HTTP-Methoden akzeptiert

+0

Können Sie leicht auf den letzten Absatz erweitern? Was ist mit meinen Bedürfnissen macht es besser, die beiden zu mischen? – Christopher

+3

Sie können URL-Muster verwenden, um Entscheidungen darüber zu treffen, ob eine Ressource eine Autorisierung benötigt oder nicht, die 'GlobalMethodSecurity' gibt an, welche Aktion ein bestimmter Benutzer innerhalb der Methode ausführen kann, z. ein Benutzername John ist berechtigt, auf '/ foo/maria' zuzugreifen, aber dann fängt '@ PreAuthorize' das ab, da es einen SpEL hat, der besagt, dass der Name des Benutzers gleich dem Namen der Pfadvariablen sein muss. Wenn Sie nur eine bestimmte URL autorisieren möchten oder nicht, bietet 'EnableWebSecurity' alles, was Sie benötigen –

Verwandte Themen