Проблема с Hasura Graphql JWT
Я развернул свой Hasura Engine, который работает внутри докера на сервере Linux. И я разработал код аутентификации токена jwt, используя nodeJs.
Проблема в том, что при добавлении токена в конечную точку Hasura API я получаю следующую ошибку:
{
"extensions": {
"code": "invalid-jwt",
"path": "$"
},
"message": "Could not verify JWT: JWTIssuedAtFuture"
}
Я установил срок действия токена 120000(2 минуты). И через 2 минуты я не получаю вышеуказанную ошибку, вместо этого я получаю правильный ответ от API.
Что меня смущает, так это то, почему я получаю правильные ответы с задержкой.
Примечание. Время контейнера докера и время сервера Linux не совпадают. В этом проблема?
2 ответа
Ошибка ясно говорит о том, что сгенерированное вами время выдачи JWT намного опережает время вашего контейнера Hasura Docker.
Сначала попробуйте узнать разницу во времени из журнала контейнера. Выяснив разницу во времени, вычтите это время из текущего времени.
Наконец, поместите это вычтенное время (должно быть в секундах) в вашу логику JWT. код.
iat: subtractedTime
добавление разрешенного_скью к эмитенту JWT исправляет это.
пример моего docker-compose.yml для Hasura: Примечание. Избегайте этого в рабочей среде. ссылка для справки
HASURA_GRAPHQL_JWT_SECRET: '{"jwk_url":"JWT_ISSUER_URL/api/auth/jwt/jwks.json", "allowed_skew": 86400}'