Einführung in Spring Security Taglibs

1. Übersicht

In diesem Tutorial werfen wir einen Blick auf Spring Security Taglibs, die grundlegende Unterstützung für den Zugriff auf Sicherheitsinformationen und das Anwenden von Sicherheitsbeschränkungen in JSPs bieten.

2. Maven-Abhängigkeiten

Fügen wir zunächst die Abhängigkeit von spring-security-taglibs zu unserer pom.xml hinzu :

 org.springframework.security spring-security-taglibs 5.2.2.RELEASE 

3. Deklarieren der Taglibs

Bevor wir die Tags verwenden können, müssen wir die Taglib oben in unserer JSP-Datei importieren:

Nachdem Sie dies hinzugefügt haben, können Sie die Tags von Spring Security mit dem Präfix sec angeben .

4. Das Autorisierungs- Tag

4.1. Zugriff auf Ausdrücke

In unseren Anwendungen verfügen wir möglicherweise über Informationen, die nur für bestimmte Rollen oder Benutzer angezeigt werden sollten.

In diesem Fall können wir das Authorize- Tag verwenden:

 Login   Logout 

Darüber hinaus können wir überprüfen, ob ein authentifizierter Benutzer bestimmte Rollen hat:

 Manage Users 

Und wir können jeden Spring Security-Ausdruck als unseren Wert für den Zugriff verwenden :

  • hasAnyRole ('ADMIN', 'USER') gibt true zurück , wenn der aktuelle Benutzer eine der aufgelisteten Rollen hat
  • isAnonymous () gibt true zurück , wenn der aktuelle Principal ein anonymer Benutzer ist
  • isRememberMe () gibt true zurück , wenn der aktuelle Principal ein Remember-Me-Benutzer ist
  • isFullyAuthenticated () gibt true zurück , wenn der Benutzer authentifiziert ist und weder anonym noch ein Remember-Me-Benutzer ist

4.2. URL

Ansonsten können wir nach Benutzern suchen, die berechtigt sind, Anforderungen an bestimmte URLs zu senden:

 Manage Users 

4.3. Debuggen

Es kann Fälle geben, in denen wir mehr Kontrolle über die Benutzeroberfläche wünschen, beispielsweise in Testszenarien. Anstatt Spring Security das Rendern dieser nicht autorisierten Abschnitte überspringen zu lassen, können wir spring.security.disableUISecurity = true beispielsweise in unserer Datei application.properties festlegen .

Wenn wir dies tun, verbirgt das Authorize- Tag seinen Inhalt nicht. Stattdessen wird der Inhalt stattdessen mit Tags umbrochen . Dann können wir das Rendering selbst mit etwas CSS anpassen.

Denken Sie jedoch daran, dass das Ausblenden von Inhalten über CSS nicht sicher ist! Der Benutzer kann einfach die Quelle anzeigen, um nicht autorisierten Inhalt anzuzeigen.

5. Das Authentifizierungs- Tag

Zu anderen Zeiten möchten wir Details zum angemeldeten Benutzer anzeigen, z. B. "Willkommen zurück, Carol!" auf der Website.

Dafür verwenden wir das Authentifizierungs- Tag:

 Welcome Back,  

6. Das csrfInput- Tag

Hoffentlich haben wir die CSRF-Verteidigung von Spring Security in unserer App aktiviert!

In diesem Fall fügt Spring Security bereits eine CSRF-Eingabe für versteckte Formulare ein Tags für uns.

Aber für den Fall, dass wir verwenden wollen Stattdessen können wir mithilfe von csrfInput manuell angeben, wo Spring Security dieses versteckte Eingabefeld platzieren soll :

  Text Field:

Wenn der CSRF-Schutz nicht aktiviert ist, gibt dieses Tag nichts aus.

7. Das csrfMetaTags- Tag

Oder wenn wir die CSRF zugreifen Token in Javascript wollen , sind, werden wir wahrscheinlich wollen das Token als Meta - Tag einzufügen.

Wir können dies mit dem Tag csrfMetaTags tun :

  JavaScript with CSRF Protection   var csrfParameter = $("meta[name='_csrf_parameter']").attr("content"); var csrfHeader = $("meta[name='_csrf_header']").attr("content"); var csrfToken = $("meta[name='_csrf']").attr("content");    ...  

Wenn der CSRF-Schutz nicht aktiviert ist, gibt dieses Tag nichts aus.

8. Fazit

In diesem kurzen Artikel haben wir uns auf einige gängige Spring Security-Taglib-Anwendungsfälle konzentriert.

Und wie wir erfahren haben, sind sie sehr nützlich, um authentifizierungs- und autorisierungsbewusste JSP-Inhalte zu rendern.

Alle Beispiele finden Sie wie immer auf Github.