express -jwt, неправильно сформированный jwt, но тот же токен работает при первом входе - PullRequest
0 голосов
/ 03 марта 2020

У меня есть сервер на основе express, использующий промежуточное ПО express -jwt для проверки токенов JWT для аутентификации в мобильном приложении.

Приложение получает токен аутентификации через вызовы API к серверу. Он никогда не пытается декодировать или перекодировать измененную версию токена. Он также использует Expo / React Native и сохраняет приобретенный токен локально на устройстве через SecureStore Expo
( для тех, кто не знаком с Expo / SecureStore, это оболочка для локальных спецификаций ОС c зашифрованное хранилище. Оно похоже на LocalStorage веб-браузера, но зашифровано ).
Если приложение закрыто, при следующем запуске ранее сохраненный токен, если он доступен, считывается из SecureStore и используется для будущие вызовы API на сервер.

При первом входе в систему все работает правильно: токен получен с сервера и успешно проверен на любые вызовы API, использующие его.

Однако после приложения При перезапуске токен, считанный из SecureStore (или даже жестко закодированный), не будет проверен. Промежуточное программное обеспечение express -jwt всегда возвращает ошибку «jwt malformed», даже если токен идентичен тому, который использовался при первом входе в систему. Никаких дополнительных мер для проверки токена не существует, express -jwt обрабатывает все это.

При поиске этой проблемы я обнаружил, что большинство людей "волшебным образом" решило ее, добавив audience поле для промежуточного программного обеспечения ( см .: https://community.auth0.com/t/access-token-too-short-jwt-malformed/9169/5). Тем не менее, это, кажется, является частью процедуры аутентификации Auth0, и я не использую аутентификацию Auth0 (или, по крайней мере, я ее явно не установил), а просто промежуточное ПО express -jwt.

I уже проверили, что токен действителен, любой онлайн-декодер JWT (включая jwt.io) правильно декодирует его и успешно проверяет подпись при использовании секретного ключа.

Кто-нибудь знает, что происходит?
Известны ли вам какие-либо конкретные c проверки, которые express -jwt выполняет на этапе проверки?

...