Ваш JWT уже является доказательством вашей аутентификации.Таким образом, вы должны отправлять его с каждым запросом, но вы можете упростить логику аутентификации на стороне сервера.
При входе в систему вам придется проверять учетные данные, на которые вы можете полагаться в подписи JWT и expiryDate
.Если подпись все еще верна, токен действителен, и вам больше не нужно проходить аутентификацию.
То же касается вашей горизонтальной аутентификации.Если вызываемая служба должна быть аутентифицирована, вы должны проверять правильность JWT для каждого запроса (обычно работает достаточно быстро).Если есть открытые вызовы API, вы, конечно, можете игнорировать JWT на стороне сервера.
В конце дня нет никакой разницы для вашей «сессии», которая также отправит некоторый «секретный» ключ, который отображает вашконтекст сеанса.Следовательно, это также будет подтверждено.Для некоторых бэкэндов вы также можете использовать JWT в качестве ключа сеанса, чтобы задействовать оба мира.
Пример:
Допустим, у вас есть два корня API:
api/secured/*
api/open/*
(Обратите внимание, что secured
и open
здесь только для демонстрационных целей)
Часть secured
будет содержать все службы, которые вы хотите аутентифицировать.Часть open
может содержать нечувствительные данные, а также ваши службы входа в систему:
api/open/login -> returns your token
api/open/token/* -> refresh, check re-issue whatever you might need
Теперь предположим, что пользователь заходит на ваш сайт.Вы захотите указать ошибку аутентификации, если он попытается получить доступ к любому api/secured/*
URL-адресу без надлежащего JWT.В этом случае вы можете перенаправить его на ваш логин и создать токен после его аутентификации.
Теперь, когда он вызывает URL api/secured/*
, ваша клиентская реализация должна предоставить JWT (Cookie, заголовок запроса и т. Д.)...).В зависимости от вашей структуры, языка и т. Д. Теперь вы можете предоставить перехватчик / фильтр / обработчик на стороне сервера, который проверит:
- Если JWT присутствует
- , если подпись действительна(в противном случае токен был подделан)
- если JWT все еще действует (expiryDate)
Тогда вы можете действовать соответственно.
Итак, подведем итог: Естьне нужно «аутентифицировать», если вы не хотите создавать новый токен.Во всех остальных случаях достаточно проверить действительность вашего JWT