Как отозвать JWT Bearer Token в .net core API

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

//var claim = _httpContextAccessor.HttpContext.User.Claims;
            // var users = await _userManager.FindByNameAsync(_httpContextAccessor.HttpContext.User.Identity.Name);
            //  var identity = _httpContextAccessor.HttpContext.User.Identity as ClaimsIdentity;
            // foreach (var item in claim)
            // {
            //     identity.RemoveClaim(item);
            // }

            await _signInManager.SignOutAsync();

person Sumit Rawat    schedule 11.09.2017    source источник
comment
Добро пожаловать в Stack Overflow, @SumitRawat. Каким образом ваш код не работает? Какой результат вы получаете? Какой результат вы ожидаете?   -  person Degan    schedule 11.09.2017
comment
Возможно, я ошибаюсь, поэтому, если кто-то знает лучше, оставьте комментарий. Я думал, что токены JWT Bearer должны быть отозваны на стороне клиента?   -  person David Lee    schedule 11.09.2017
comment
Да, @DavidLee, я хочу отозвать токен носителя JWT с сервера. В приведенном выше коде я просто пытаюсь удалить претензии пользователя.   -  person Sumit Rawat    schedule 11.09.2017
comment
Есть ли способ проверить токен или изменить дату истечения срока действия на прошлое?   -  person Sumit Rawat    schedule 11.09.2017
comment
Возможный дубликат Как отозвать токен JWT?   -  person David Lee    schedule 11.09.2017
comment
@SumitRawat Посмотрите мою ссылку выше, похоже, это не так просто сделать.   -  person David Lee    schedule 11.09.2017
comment
Также есть эта ссылка: forums.asp.net/t/ говорит, что встроенная функциональность отсутствует.   -  person David Lee    schedule 11.09.2017
comment
Везде это показывает, что это непросто сделать, но моя настоящая проблема заключается в том, что когда я меняю пароль после того, как этот токен генерируется только предыдущими учетными данными   -  person Sumit Rawat    schedule 12.09.2017


Ответы (1)


Невозможно отменить/отозвать токен JWT во время выхода пользователя из системы, это непросто, но есть обходной путь. Вы можете попробовать выполнить следующие шаги:

  • Установите разумный срок действия токенов
  • Удалить сохраненный токен со стороны клиента после выхода из системы
  • Иметь БД более неактивных токенов, которым еще есть время жить
  • Запрос предоставленного токена для черного списка при каждом авторизованном запросе

Я также вставляю 2 ссылки ниже, которые я нашел очень полезными:

person vasilisdmr    schedule 17.03.2020