Sim, é uma prática comum e recomendada utilizar tempos de expiração para os tokens em sistemas que envolvem autenticação e autorização, como em APIs REST protegidas pelo Spring Security. A ideia é limitar o tempo de vida de um token para mitigar potenciais riscos de segurança.
No contexto do Spring Security, o controle de expiração geralmente é gerenciado através do tempo de expiração do token de acesso (access token). O tempo de expiração é definido no momento em que o token é emitido e, uma vez que esse tempo expira, o token torna-se inválido e o usuário precisará obter um novo token para continuar a interagir com a API.
Você pode configurar o tempo de expiração em sua aplicação Spring Boot através de propriedades no arquivo application.properties
(ou application.yml
). Aqui está um exemplo básico:
# Configuração do tempo de expiração do token em segundos
spring.security.oauth2.resourceserver.jwt.jwk-set-uri=<URL_DO_SEU_JWKS_ENDPOINT>
spring.security.oauth2.resourceserver.jwt.issuer-uri=<URL_DO_SEU_ISSUER>
spring.security.oauth2.resourceserver.jwt.clock-skew=<VALOR_EM_SEGUNDOS_PARA_CORRECAO_DE_SINCRONIZACAO>
spring.security.oauth2.resourceserver.jwt.jws-algorithm=<ALGORITMO_JWS>
Por padrão, o Spring Security usa o tempo de expiração configurado no próprio token JWT. Ao validar um token, ele verifica se o tempo de expiração (exp) no token JWT ainda não foi atingido. Se tiver, o token é considerado inválido.
Portanto, para definir um tempo de expiração de 30 minutos, você pode configurar a propriedade spring.security.oauth2.resourceserver.jwt.clock-skew
com o valor de 1800 segundos (30 minutos).
É importante também considerar a implementação específica do seu sistema e a sensibilidade das operações realizadas. Dependendo do contexto, você pode ajustar o tempo de expiração para ser mais curto ou mais longo, conforme necessário para garantir a segurança adequada.