Amazon Cognito Timstamp разница - PullRequest
0 голосов
/ 20 июня 2019

Я использую пул пользователей conginto, расположенный в зоне Мумбаи (ap-south-1). После успешного входа пользователей в систему, id_token, access_token и refresh_token.

Полезная нагрузка для id_token с использованием python-jose lib.

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

Теперь я хочу проверить, не истек ли токен заранее или нет, для этого я хочу сравнить текущую метку времени на моей машине с exp 1561017879 в id_token.

когда я это сделаю,

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

or 

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

Ни одна из этих временных отметок не равна временной отметке, которую я получаю в ошибке. Примечание. Моя машина находится в Нью-Дели / Индия и в идеале должна находиться в том же часовом поясе, что и центр обработки данных AWS mumbai. Я также проверил разницу во времени в часах.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...