JWT :: ExpiredSignature вызывается при проверке токена из getUserIdentityTokenAsync - PullRequest
0 голосов
/ 14 апреля 2020

Наша система аутентифицирует пользователей, выполнив эти шаги проверки на токене, сгенерированном getUserIdentityTokenAsyn c () .

Эти токены не работают следующая проверка

Текущее время находится между временами, указанными в претензиях nbf и exp. Заявление nbf указывает самое раннее время, когда токен считается действительным, а утверждение exp указывает время истечения срока действия токена. Рекомендуется учесть некоторые различия в настройках часов между серверами.

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

Current Time: 2020-04-10 17:02:11 +0000,
Valid Start: 2020-04-09 14:46:31 +0000,
Valid End: 2020-04-09 23:16:31 +0000,

Мы проверяем эти времена следующим образом:

    def timeframe_valid?
      PAYLOAD_WIGGLE_TIME = 900                                                         
      if @payload.present?                                                         
        now = Time.now.to_i                                                        
        payload_valid_start = @payload[:nbf] - PAYLOAD_VALID_WIGGLE_TIME           
        payload_valid_expire = @payload[:exp] + PAYLOAD_VALID_WIGGLE_TIME          

        if now < payload_valid_start || now > payload_valid_expire                 
          # handle invalid token...                                                                      
        end                                                                        
      end                                                                          
    end

Мы делаем уникальный вызов getUserIdentityTokenAsync перед каждым запросом API. Поскольку мы видим такую ​​большую разницу во временном окне для действительного токена и времени его проверки, я думаю, что пользователи оставляют надстройку открытой в течение длительных периодов времени без обновления. По какой-то причине, когда они возвращаются, getUserIdentityTokenAsync не возвращает новый токен, а скорее старый, срок действия которого уже истек.

Есть ли способ заставить getUserIdentityToken выдавать новый токен после одного давно истек без жесткого обновления sh надстройки?

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