JWT Expire Behavior - PullRequest
       15

JWT Expire Behavior

1 голос
/ 21 мая 2019

Я новичок в мире JWT (и, честно говоря, в целом по безопасности). У меня есть служба .NET Core2, которая защищена с помощью токена-носителя JWT. С точки зрения клиента, что должно произойти после истечения срока действия токена и отправки ответа 401Unauthorized? Ожидаю ли я, что клиент сам запросит новый токен?

Если ожидается, что клиент запрашивает новый токен ... означает ли это, что при каждом вызове API, выполняемом моей службе, необходимо указывать код, который проверяет наличие 401Unauthorized, знает, что нужно вызывать другую конечную точку для создать новый действительный токен, а затем переделать исходный вызов с новым токеном?

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

Ответы [ 2 ]

1 голос
/ 21 мая 2019

Это очень нормально для клиента с бэкэндом, который использует JWT, чтобы иметь описанную вами функциональность.

Обычно бэкэнд возвращает 401 (часто сопровождаемый {"message": "Access token expired"} телом).

Таким образом, класс, который обрабатывает запросы к бэкэнду, обычно имеет функцию запроса, заключенную в попытку catch.

Если запрос не удался, вы можете проверить код ошибки 401 и сообщение «Маркер доступа истек», а затемобновите токен и повторите запрос.

Также вы можете (до запроса) декодировать токен JWT и проверить, не истек ли он (просмотрев время истечения).Затем вы можете выполнить вызов токена обновления, прежде чем отправлять намеченный запрос.

Оба метода вызовут небольшую задержку загрузки сайта, но, вероятно, (в зависимости от производительности вашего API) это будет очень незначительная задержка.

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

0 голосов
/ 21 мая 2019

Проверьте использование и реализацию токенов обновления. Идея заключается в том, что при первоначальном запросе токена генерируется токен обновления, а также обычный токен. Нормальные токены живут дольше, а обновления - дольше. Да, когда вы делаете вызов, вам нужно проверить, а) не истек ли токен, и б) каков их ответ, и координировать, чтобы получить обновленный токен автоматически. Оно должно быть прозрачным для пользователя.

Некоторые подробности здесь: https://www.blinkingcaret.com/2018/05/30/refresh-tokens-in-asp-net-core-web-api/

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