Код Middle Безопасность бэкенда спрашивают часто обновлено
Проверка claims JWT после подписи
Условие
Подпись токена уже проверена библиотекой. Напиши checkClaims(payload, { now, issuer, audience, leewaySec = 0 }), now в секундах Unix. Верни 'ok' или код первой найденной проблемы в таком порядке проверок:
'iss':payload.iss !== issuer;'aud':payload.aud(строка или массив строк) не содержитaudience;'exp': нетexpилиnow >= exp + leewaySec(токен истёк);'nbf': естьnbfиnow < nbf - leewaySec(ещё не действует);'iat': естьiatи он из будущего:iat > now + leewaySec.
Примеры
checkClaims({"iss":"auth","aud":"api","exp":2000,"iat":1000}, {"now":1500,"issuer":"auth","audience":"api"}) // "ok"
checkClaims({"iss":"evil","aud":"api","exp":2000}, {"now":1500,"issuer":"auth","audience":"api"}) // "iss"
checkClaims({"iss":"auth","aud":["web","api"],"exp":2000}, {"now":1500,"issuer":"auth","audience":"api"}) // "ok"
Как подойти
Подсказки: 2
- Приведи
audк массиву. - Отсутствующий
expсчитай ошибкой: бессрочный токен нельзя отозвать.
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.
Предыдущий вопрос
CORS: проверка Origin по белому списку
Следующий вопрос
deepMerge без prototype pollution