Определите, истек ли срок действия AccessToken - PullRequest
0 голосов
/ 12 ноября 2018

Я использую гибридный поток с токеном обновления.Я хочу ограничить количество вызовов с моего веб-сервера на мои серверы аутентификации / ресурсов, т. Е. Неавторизованные ошибки с сервера ресурсов и ненужные обновления токена доступа

Вопрос. Есть ли дата истечения срока действия токена доступа?или способ добавить срок действия или дату выпуска в токен доступа?Я хочу использовать это для проверки перед обновлением токенов.

Я хочу выполнить эту проверку на веб-сервере.Мне просто нужна дата выдачи на токене доступа

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

Спасибо

Ответы [ 2 ]

0 голосов
/ 13 ноября 2018

Веб-сервер является клиентом. Клиент может считать время истечения (которое уже является частью токена доступа) следующим образом:

using System.IdentityModel.Tokens.Jwt;

public class HomeController : Controller
{

    public async Task<IActionResult> CallApiUsingUserAccessToken()
    {
        var accessToken = await HttpContext.GetTokenAsync("access_token");

        // Read expiration time
        var tokenHandler = new JwtSecurityTokenHandler();
        var jwtSecurityToken = tokenHandler.ReadJwtToken(accessToken);

        var validTo = jwtSecurityToken.ValidTo;

        // ...
    }
}

Я только что добавил строки, касающиеся чтения времени истечения. HomeController является частью проекта MvcClient, который доступен в образце 5_HybridFlowAuthenticationWithApiAccess .

0 голосов
/ 12 ноября 2018

Конфигурация клиента позволяет устанавливать следующие свойства в отношении времени жизни токена доступа:

AccessTokenLifetime : время жизни токена доступа в секундах

AbsoluteRefreshTokenLifetime : максимальное время жизни токена обновления

RefreshTokenExpiration : фиксированное время истечения (имеет как абсолютные, так и скользящие параметры)

Вот документация вокруг этого: http://docs.identityserver.io/en/release/reference/client.html

...