Срок действия проверки токена управляемой идентификации - PullRequest
0 голосов
/ 30 апреля 2020

У меня есть токен Azure Managed Identity Access, который я пытаюсь кэшировать. Я не уверен в правильности способа проверки срока действия токена. Я кеширую свойство expires_on, которое Micrososft объясняет как «промежуток времени, когда истекает токен доступа. Дата представляется в виде количества секунд от« 1970-01-01T0: 0: 0Z UT C. »

Означает ли это, что свойство expires_on из токена уже имеет формат Ut c? Я не уверен, что можно проверять дату и время в Ut c и сравнивать ее непосредственно с ней. Я очень боюсь, что если мои логики c неверно. Я собираюсь возвращать токен с истекшим сроком действия снова и снова, ломая приложение.

Мой текущий чек:

var tokenExp = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
tokenExp = tokenExp.AddSeconds(Int32.Parse(cachedExpiresOn));  // cachedExpiresOn is "1588350330"

if (tokenExp > DateTime.UtcNow)
{
  // return cached token
} else 
{
  // fetch token and cache
}

1 Ответ

1 голос
/ 01 мая 2020

Согласно моему тесту, ваше решение должно работать.

Но на самом деле вы можете использовать код ниже, чтобы проверить его напрямую.

var jwthandler = new JwtSecurityTokenHandler();
var jwttoken = jwthandler.ReadToken("<your access_token>");
var expDate = jwttoken.ValidTo;
if (expDate < DateTime.UtcNow)
     Console.WriteLine("Expired");
else
     Console.WriteLine("Not expired");

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...