当前,我正在使用Google Cloud服务将我的设备编程为IoT项目的一部分。
几乎所有的东西都在工作,但不是全部。 我为Python编辑了原始的MQTT库,如果我将JWT令牌的过期时间设置为少于2小时,它将开始正常工作
JWT令牌的24小时有效期是否有效?还是我做错了什么?
我正在使用Raspberry PI 3B +和Python 3.6.7
我的JWT访问和刷新令牌与Google在Github中的库中的令牌相同。我的库仅在多个线程中运行它,因此我可以从同一设备创建多个连接。
编辑:我在create_jwt
函数中修改了这一行...
'exp': datetime.datetime.utcnow() + datetime.timedelta(minute=20)
到
'exp': datetime.datetime.utcnow() + datetime.timedelta(hours=12)
答案 0 :(得分:2)
此问题的一个可能原因是Raspberry Pi的时钟设置不正确。例如,可能系统时钟设置为本地时间而不是UTC。确保运行date --utc
返回正确的UTC时间。
答案 1 :(得分:1)
是的,JWT的最大使用寿命为24小时(加上一点时间来解决时钟偏斜)。
以下是文档页面的摘录:https://cloud.google.com/iot/docs/how-tos/credentials/jwts
(“ Expiration”):令牌停止有效的时间戳记,指定为自1970年1月1日00:00:00 UTC以来的秒数。令牌的最大生存期为24小时+偏斜。