нет ограничений на время жизни токенов обновления на сервере идентификации 4 - PullRequest
0 голосов
/ 17 июня 2019

Я использовал микросервисы, в настоящее время для доступа использую токен доступа JWT.Но токен доступа прерывался с определенного времени.Чтобы преодолеть этот сценарий, я применил токен обновления, чтобы обновить токен с истекшим сроком действия.Теперь я хочу, чтобы не было ограничений по времени жизни токена обновления.Как этого добиться?

Примечание. Использую Identity Server 4 для генерации токена JWT

Ответы [ 2 ]

1 голос
/ 17 июня 2019

Как задокументировано , установите RefreshTokenExpiration = Sliding и AbsoluteRefreshTokenLifetime = 0.

Сервис DefaultRefreshToken примет это как неопределенный слайд. Соответствующий код:

// if absolute exp > 0, make sure we don't exceed absolute exp
// if absolute exp = 0, allow indefinite slide

var currentLifetime = refreshToken.CreationTime.GetLifetimeInSeconds(Clock.UtcNow.UtcDateTime);
var newLifetime = currentLifetime + client.SlidingRefreshTokenLifetime;

// zero absolute refresh token lifetime represents unbounded absolute lifetime
// if absolute lifetime > 0, cap at absolute lifetime
if (client.AbsoluteRefreshTokenLifetime > 0 && newLifetime > client.AbsoluteRefreshTokenLifetime)
{
    newLifetime = client.AbsoluteRefreshTokenLifetime;
}
refreshToken.Lifetime = newLifetime;

Установите SlidingRefreshTokenLifetime на более длительное время, например, один месяц.

С этими настройками пользователь может обновлять токен на неопределенное время, с одним ограничением: пользователь не может быть неактивным более месяца.

Вы можете настроить это значение на приемлемое для вас время истечения.

1 голос
/ 17 июня 2019

Глядя в код, проверяя время жизни маркера обновления, я вижу там только

return (now > creationTime.AddSeconds(lifetime));

Поэтому ответ таков: установить его неограниченно невозможно.

Тем не менее, вы можетеизмените значение по умолчанию 2592000 секунд / 30 дней на что-то более длинное.Просто установите

AbsoluteRefreshTokenLifetime = <your_desired_value>

в (каждой) конфигурации клиента в вашем Identityserver

...