Срок действия JWT ядра Google Cloud IoT на самом деле составляет 24 часа?

В настоящее время я программирую свое устройство в рамках проекта Интернета вещей с помощью сервисов Google Cloud.

Практически все работает, но не все. Я отредактировал исходную библиотеку MQTT для Python, и она начала работать правильно, если я установил срок действия токена JWT менее 2 часов.

Являются ли 24 часа действительным сроком действия для токена JWT? А может я что-то не так делаю?

Я использую Raspberry PI 3B + и Python 3.6.7

Мой токен доступа и обновления JWT такой же, как и токен в библиотеке Google в Github. Моя библиотека запускает его только в нескольких потоках, чтобы я мог создавать несколько соединений с одного и того же устройства.

Изменить: я изменил эту строку в функции create_jwt ...

'exp': datetime.datetime.utcnow() + datetime.timedelta(minute=20)

to

'exp': datetime.datetime.utcnow() + datetime.timedelta(hours=12)

person Juan Quintero    schedule 20.02.2019    source источник


Ответы (2)


Одна из возможных причин этой проблемы - неправильная установка часов Raspberry Pi. Например, возможно, что системные часы установлены на местное время, а не на всемирное координированное время. Убедитесь, что запуск date --utc возвращает правильное время в формате UTC.

person David    schedule 20.02.2019
comment
это правильно, у меня есть время rpi по местному времени, но проблема была в коде, упомянутом выше, сейчас он работает сегодня утром, я просто оставляю его работающим, надеюсь, что теперь он решен ... спасибо! ;) - person Juan Quintero; 21.02.2019

Да, максимальный срок службы JWT составляет 24 часа (плюс немного для учета перекоса часов).

Вот выдержка со страницы документации: https://cloud.google.com/iot/docs/how-tos/credentials/jwts.

(«Истечение срока»): метка времени, когда токен перестает быть действительным, указывается в секундах с 00:00:00 по всемирному координированному времени, 1 января 1970 года. Максимальное время жизни токена составляет 24 часа + асимметрия.

person Alex Hong    schedule 20.02.2019
comment
Теперь я знаю, что максимальное время жизни токена составляет 24 часа, я только что исправил свою проблему, изменив datetime.timedelta(hours=23) и обновив токен каждые 12 часов ... - person Juan Quintero; 21.02.2019