Introdução aos Taglibs do Spring Security
1. Visão geral
Neste tutorial, daremos uma olhada emSpring Security Taglibs, que fornece suporte básico para acessar informações de segurança e aplicar restrições de segurança em JSPs.
2. Dependências do Maven
Primeiro de tudo, vamos adicionar a dependênciaspring-security-taglibs ao nossopom.xml:
org.springframework.security
spring-security-taglibs
5.0.7.RELEASE
3. Declarando os Taglibs
Agora, antes de podermos usar as tags, precisamos importar o taglib na parte superior do nosso arquivo JSP:
<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %>
Depois de adicionar isso, seremos capazes de especificar as tags do Spring Security com o sprefixsec .
4. A tagauthorize
4.1. Expressõesaccess
Em nossos aplicativos, podemos ter informações que devem ser mostradas apenas para determinadas funções ou usuários.
Quando for esse o caso, podemos usar a tagauthorize:
Login
Logout
Além disso, podemos verificar se um usuário autenticado possui funções específicas:
Manage Users
E podemos usar qualquerSpring Security expression como nosso valor paraaccess:
-
hasAnyRole(‘ADMIN','USER') retornatrue se o usuário atual tem qualquer uma das funções listadas
-
isAnonymous() retornatrue se o principal atual for um usuário anônimo
-
isRememberMe() retornatrue se o principal atual for um usuário que lembra-me
-
isFullyAuthenticated() retornatrue se o usuário for autenticado e não for anônimo nem um usuário que lembra de mim
4.2. url
Fora isso, podemos verificar usuários autorizados a enviar solicitações para determinados URLs:
4.3. Depuração
Pode haver casos em que queremos mais controle sobre a interface do usuário, por exemplo, em cenários de teste. Em vez de fazer com que o Spring Security ignore a renderização dessas seções não autorizadas, podemos definirspring.security.disableUISecurity =true em, digamos, nosso arquivoapplication.properties.
When we do this, the authorize tag won’t hide its contents. Em vez disso, ele envolverá o conteúdo com tags<span class=”securityHiddenUI”>… </span>. Em seguida, podemos personalizar a renderização com algum CSS.
Remember though that hiding content via CSS isn’t secure! O usuário pode simplesmente visualizar a fonte para ver o conteúdo não autorizado.
5. A tagauthentication
Outras vezes, queremos exibir detalhes sobre o usuário conectado, como dizer algo como “Bem-vinda de volta, Carol!” no site.
Para isso, usamos o veadoauthentication :
Welcome Back,
6. A tagcsrfInput
Felizmente, temos a defesa CSRF do Spring Security ativada em nosso aplicativo!
Se fizermos isso, o Spring Security já inserirá uma entrada de formulário oculto CSRF dentro das tags<form:form> para nós.
Mas no caso de querermos usar<form> em vez disso,we can manually indicate where Spring Security should place this hidden input field using csrfInput:
Se a proteção CSRF não estiver ativada, esse tag não produzirá nada.
7. A tagcsrfMetaTags
Ou,if we’re wanting to access the CSRF token in Javascript,, provavelmente queremos inserir o token como uma meta tag.
Podemos fazer isso com o veadocsrfMetaTags :
JavaScript with CSRF Protection
...
Novamente, se a proteção CSRF não estiver habilitada, esta tag não produzirá nada.
8. Conclusão
Neste artigo rápido, focamos em alguns casos de uso comuns de taglib do Spring Security.
E, como aprendemos, eles são muito úteis para renderizar conteúdo JSP de autenticação e autorização.
Todos os exemplos, como sempre, podem ser encontradosover on Github.