Introducción a Spring Security Taglibs

1. Información general

En este tutorial, echaremos un vistazo a Spring Security Taglibs, que proporciona soporte básico para acceder a información de seguridad y aplicar restricciones de seguridad en JSP.

2. Dependencias de Maven

En primer lugar, agreguemos la dependencia spring-security-taglibs a nuestro pom.xml :

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

3. Declaración de los Taglibs

Ahora, antes de que podamos usar las etiquetas, necesitamos importar el taglib en la parte superior de nuestro archivo JSP:

Después de agregar esto, podremos especificar las etiquetas de Spring Security con el prefijo sec .

4. La etiqueta autorizada

4.1. Expresiones de acceso

En nuestras aplicaciones, es posible que tengamos información que debería mostrarse solo para ciertos roles o usuarios.

Cuando este es el caso, podemos usar la etiqueta autorizar :

 Login   Logout 

Además, podemos verificar si un usuario autenticado tiene roles específicos:

 Manage Users 

Y podemos usar cualquier expresión de Spring Security como nuestro valor de acceso :

  • hasAnyRole ('ADMIN', 'USER') devuelve verdadero si el usuario actual tiene alguno de los roles enumerados
  • isAnonymous () devuelve verdadero si el principal actual es un usuario anónimo
  • isRememberMe () devuelve verdadero si el principal actual es un usuario que recuerdame
  • isFullyAuthenticated () devuelve verdadero si el usuario está autenticado y no es anónimo ni un usuario que recuerdame

4.2. url

Aparte de eso, podemos verificar si hay usuarios autorizados a enviar solicitudes a ciertas URL:

 Manage Users 

4.3. Depuración

Puede haber casos en los que queramos más control sobre la interfaz de usuario, por ejemplo, en escenarios de prueba. En lugar de que Spring Security omita la representación de estas secciones no autorizadas, podemos establecer spring.security.disableUISecurity = true en, digamos, nuestro archivo application.properties .

Cuando hacemos esto, la etiqueta autorizar no ocultará su contenido. En su lugar, envolverá el contenido con etiquetas ... en su lugar. Luego, podemos personalizar el renderizado nosotros mismos con algo de CSS.

Sin embargo, recuerde que ocultar contenido a través de CSS no es seguro. El usuario puede simplemente ver la fuente para ver contenido no autorizado.

5. La etiqueta de autenticación

En otras ocasiones, querremos mostrar detalles sobre el usuario que inició sesión, como decir algo como "¡Bienvenido de nuevo, Carol!" en el sitio.

Para ello utilizamos la etiqueta de autenticación :

 Welcome Back,  

6. La etiqueta csrfInput

¡Con suerte, tenemos la defensa CSRF de Spring Security habilitada en nuestra aplicación!

Si lo hacemos, Spring Security ya inserta una entrada de formulario oculta CSRF dentro etiquetas para nosotros.

Pero en caso de que queramos usar en su lugar, podemos indicar manualmente dónde Spring Security debe colocar este campo de entrada oculto usando csrfInput :

  Text Field:

Si la protección CSRF no está habilitada, esta etiqueta no genera nada.

7. La etiqueta csrfMetaTags

O, si queremos acceder al token CSRF en Javascript, probablemente querremos insertar el token como una metaetiqueta.

Podemos hacer esto con la etiqueta csrfMetaTags :

  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");    ...  

Nuevamente, si la protección CSRF no está habilitada, esta etiqueta no generará nada.

8. Conclusión

En este artículo rápido, nos enfocamos en algunos casos de uso comunes de taglib de Spring Security.

Y, como aprendimos, son muy útiles para renderizar contenido JSP de autenticación y autorización.

Todos los ejemplos, como siempre, se pueden encontrar en Github.