Проверка токена состоит из серии шагов, и если какой-либо из них завершится неудачно, запрос должен быть отклонен.Вот список всех проверок, которые должен выполнить ваш API:
• Проверьте, правильно ли сформирован JWT
• Проверьте подпись
• Подтвердите стандартные утверждения
• Проверка разрешений приложения (областей)
Для реализации пользовательской проверки необходимо выполнить следующее:
1) Разобрать Jwt
Для анализаJWT вы можете либо вручную выполнить все проверки, как описано в спецификации RFC 7519> 7.2 Проверка JWT, либо использовать одну из библиотек, перечисленных в разделе Библиотеки для подписи / проверки токенов в JWT.io.
Например, если ваш API реализован с Node.js и вы хотите использовать библиотеку node-jsonwebtoken, то вы бы вызвали метод jwt.verify ().Если синтаксический анализ завершится неудачно, библиотека возвратит ошибку JsonWebTokenError с сообщением о неправильном формате jwt.
2) Проверьте алгоритм подписи
API должен проверить, соответствует ли алгоритм, как указано в JWTheader (свойство alg), соответствует ожидаемому API.В противном случае токен считается недействительным, и запрос должен быть отклонен.
Чтобы проверить, соответствует ли подпись ожиданиям API, необходимо декодировать JWT и извлечь свойство alg заголовка JWT.
Кроме того, вы можете использовать одну из библиотек, перечисленных в разделе «Библиотеки для подписи / проверки токенов» JWT.io .
3) Проверить заявки
Как только API проверит подпись токена, следующим шагом будет проверка стандартных утверждений о полезной нагрузке токена.Необходимо выполнить следующие проверки:
• Истечение срока действия токена: текущая дата / время должны быть раньше даты / времени истечения срока, указанных в заявке на получение опыта (которая является меткой времени Unix).Если нет, запрос должен быть отклонен.
• Эмитент токена: в запросе iss указывается эмитент JWT.Значение должно соответствовать значению, настроенному в вашем API.Для JWT, выпущенных Auth0, iss содержит ваш домен Auth0 с префиксом https: // и / суффиксом: https://YOUR_DOMAIN/. Если вы используете функцию пользовательских доменов, вместо этого значение будет иметь следующий формат: https:///.
• Аудитория токенов: утверждение aud определяет получателей, для которых предназначен JWT.Для JWT, выпущенных Auth0, Audholds содержит уникальный идентификатор целевого API (поле «Идентификатор» в настройках вашего API).Если API не является целевой аудиторией JWT, он должен отклонить запрос.
Вот библиотека JWT для JAVA, где вы можете использовать метод проверки (токен) для проверки.
https://github.com/auth0/java-jwt