Bom dia pessoal.
Eu quero, no meu caso, validar se o token expirou. Como eu posso fazer isso através da validação do token?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Bom dia pessoal.
Eu quero, no meu caso, validar se o token expirou. Como eu posso fazer isso através da validação do token?
Olá, Fernando! Entendo que você queira verificar se um token expirou.
No código que você está estudando, o tempo de expiração do token é controlado pela propriedade ClockSkew, que está definida como TimeSpan.Zero. Isso significa que o sistema não vai tolerar nenhum desvio de tempo - ou seja, assim que o tempo de validade do token expirar, ele será considerado inválido.
Caso você queira verificar manualmente se um token expirou, você pode decodificar o token e verificar o campo exp (de expiration), que é um timestamp da data/hora de expiração do token. Existem várias bibliotecas que podem ajudar nisso, como a JwtSecurityTokenHandler do próprio .NET. Aqui está um exemplo de como você poderia fazer isso:
var handler = new JwtSecurityTokenHandler();
var tokenS = handler.ReadToken(seuToken) as JwtSecurityToken;
var dataExpiracao = tokenS.ValidTo;
if (dataExpiracao < DateTime.UtcNow)
{
Console.WriteLine("Token expirado.");
}
else
{
Console.WriteLine("Token ainda é válido.");
}
Neste exemplo, seuToken é uma string contendo o token JWT que você quer verificar. O método ReadToken decodifica o token, e a propriedade ValidTo retorna a data/hora de expiração do token. A comparação dataExpiracao < DateTime.UtcNow verifica se a data/hora de expiração é anterior à data/hora atual, indicando que o token expirou.
Lembre-se de que essa é uma verificação manual, na maioria das vezes você não precisa fazer isso, pois a própria biblioteca de autenticação vai verificar a validade do token para você.
Espero ter ajudado e bons estudos!
E como eu posso chamar esse código no arquivo de Program.cs, e obter o token que vem pela requisição?