Я столкнулся с этой проблемой на стадии тестирования моего приложения. Клиент устанавливал дату истечения срока действия токена в течение очень длительного времени (19 лет или около того), поэтому мы не будем часто запрашивать новый токен во время тестов. Но через некоторое время выяснилось, что токен уже истек (по истечении случайного времени).
Проблема заключалась в перезапуске / обновлении серверного приложения, что привело к потере токенов в памяти и к тому, что моя простая проверка на expires_in не работает :
if (_currentToken.ExpirationDate < DateTime.Now.AddMinutes(1))
{
_currentToken = GetToken();
}
Как бы я защитил такой сценарий? С таким же успехом это может произойти на производстве, но, надеюсь, реже из-за меньшего количества перезапусков приложений и более короткого времени токена. К сожалению, у меня нет доступа к настройкам авторизации на стороне сервера, и токены не будут сохраняться ни в одном хранилище.
Я бы не хотел вызывать какое-либо фиктивное действие на сервере, чтобы проверять, возвращается ли оно 401 unauthorized
перед каждым действие.