亚马逊Cognito timstamp差异

时间:2019-06-20 12:45:27

标签: python python-3.x amazon-web-services amazon-cognito

我正在使用孟买区域(ap-south-1)中托管的conginto用户池。成功登录用户后,id_token,access_token和refresh_token。

使用python-jose lib的id_token的有效负载。

from jose import jwt, JWTError 
payload = jwt.get_unverified_claims(id_token)

{'sub': '48eec88d-641b-4b56-b956-50580as4551fdd',
 'aud': 'kl3sep8n1uv2342434fdfdfdf33',
 'email_verified': True,
 'event_id': '5726b52a-d555-4da3-9102-2486r5842gfbf8',
 'token_use': 'id',
 'auth_time': 1561014279,
 'iss': 'https://cognito-idp.ap-south-1.amazonaws.com/ap-south-1_7lRq7TRBG',
 'name': 'Saurav Verma',
 'cognito:username': 'graphicaldot',
 'exp': 1561017879,
 'iat': 1561014279,
 'email': 'ho@gmail.com'}

让我说我的id_token一小时后过期了,每次我使用过期的id_token时,都会遇到以下错误

An error occurred (NotAuthorizedException) when calling the GetId operation: Invalid login token. Token expired:  1561033794 >= 1561017879

现在,我想检查令牌是否已提前过期,为此,我想将计算机上的当前时间戳与id_token上的exp 1561017879进行比较。

当我这样做的时候,

import datetime
In [0]: datetime.datetime.now().timestamp()                                                                                                                                                                                                                                                  
Out[0]: 1561034067.562503

or 

In [1]: datetime.datetime.utcnow().timestamp()                                                                                                                                                                                                                                               
Out[1]: 1561014287.656654

这些时间戳都不等于我在错误中收到的时间戳。 注意:我的机器位于NewDelhi / India,理想情况下应位于AWS孟买数据中心的同一时区。我还检查了以小时为单位的时差。

In [54]: datetime.datetime.fromtimestamp(1561034067.562503)                                                                                                                                                                                                                                   
Out[54]: datetime.datetime(2019, 6, 20, 18, 4, 27, 562503)

In [55]: datetime.datetime.fromtimestamp(1561014287.656654)                                                                                                                                                                                                                                   
Out[55]: datetime.datetime(2019, 6, 20, 12, 34, 47, 656654)

In [56]: datetime.datetime.fromtimestamp(1561033794)                                                                                                                                                                                                                                          
Out[56]: datetime.datetime(2019, 6, 20, 17, 59, 54)

这清楚地表明错误显示了我的孟买时区时间戳,但仍比我计算机上的时间戳晚4-6分钟。

我还同步了我的机器时间

sudo timedatectl set-ntp off
sudo timedatectl set-ntp on

0 个答案:

没有答案