Сервер идентификации 4 не работает с истечением срока действия токена обновления

#jwt #identityserver4 #refresh-token

#jwt #identityserver4 #обновить токен

Вопрос:

Я создал клиента на сервере аутентификации Identity Server 4 и установил следующие свойства токена:

  var idsClient = new Client
                {
                    ClientName = parsedResult.Name,
                    ClientId = parsedResult.ClientId,
                    RequireConsent = false,
                    RequirePkce = false,
                    AllowOfflineAccess = true,
                    AllowAccessTokensViaBrowser = true,
                    RefreshTokenUsage = TokenUsage.OneTimeOnly,
                    RefreshTokenExpiration = TokenExpiration.Sliding,
                    AccessTokenLifetime = 7200, //2 hours
                    AbsoluteRefreshTokenLifetime = 2592000, //30 days
                    SlidingRefreshTokenLifetime = 1296000 //15 days
                };
  

Когда я запрашиваю токен доступа, срок его действия устанавливается равным 2 часам, и возвращается значение токена обновления. Когда я запрашиваю токен обновления, срок действия по-прежнему устанавливается на 2 часа вместо 15 дней.

Вот варианты выбора токена и запросов на обновление токена: введите описание изображения здесь

введите описание изображения здесь

Ответ №1:

Вы не запрашиваете токен обновления, но вы используете токен обновления для запроса токена доступа.

Поскольку вы настроили TokenUsage.OneTimeOnly , каждый успешный ответ будет возвращать два токена:

  • Токен доступа
  • Обновить токен

Я не уверен, какой токен вы ожидаете установить на 15 дней, но в данном случае токен доступа всегда должен иметь срок службы два часа.

Комментарии:

1. Вы не можете. Срок действия токена доступа всегда будет составлять два часа.

2. Итак, я понял терминологию, и это то, что я делаю… Я использую токен обновления для запроса токена доступа, и этот токен доступа всегда настроен на истечение срока действия через 2 часа. Как я могу получить токен доступа из запроса на обновление токена, срок действия которого истекает через 15 дней? Срок действия токена обновления составляет 15 дней … то есть он будет запрашивать токен доступа в течение 15 дней, пока не истечет срок его действия? Который, в свою очередь, у каждого токена доступа истекает через 2 часа? Кроме того, я также пробовал RefreshTokenUsage = TokenUsage. Повторное использование с теми же результатами.

3. Хорошо, думаю, теперь у меня все есть. Спасибо

4. Да, вы можете использовать токен доступа в течение 15 дней и максимум в течение 30 дней (абсолютный срок службы токена обновления). Затем пользователь должен войти в систему снова.