Как создать разные OTP-токены для разных пользователей, использующих pyotp? - PullRequest
0 голосов
/ 25 февраля 2020

Код выглядит следующим образом:

from pyotp import TOTP                                                                                                                                                                            

In [180]: import datetime                                                                                                                                                                                   

In [181]: import time                                                                                                                                                                                       

In [182]: now = time.time()                                                                                                                                                                                 

In [183]: secret = 'base32secret3232'                                                                                                                                                                       

In [184]: totp = TOTP(secret)                                                                                                                                                                               

In [185]: totp.at(now)                                                                                                                                                                                      
Out[185]: '447195'

In [186]: totp.at(now+20)                                                                                                                                                                                   
Out[186]: '562455'

In [187]: totp.at(now+10)                                                                                                                                                                                   
Out[187]: '447195'

In [188]: totp.at(now+30)                                                                                                                                                                                   
Out[188]: '562455'

In [189]: totp.at(now+40)                                                                                                                                                                                   
Out[189]: '562455'

In [190]: totp.at(now+50)                                                                                                                                                                                   
Out[190]: '412255'

In [191]: totp.at(now+60)                                                                                                                                                                                   
Out[191]: '412255'

In [192]: totp.at(now+70)                                                                                                                                                                                   
Out[192]: '412255'

In [193]: totp.at(now+80)                                                                                                                                                                                   
Out[193]: '722023'

In [194]: totp.interval                                                                                                                                                                                     
Out[194]: 30

In [195]: now                                                                                                                                                                                               
Out[195]: 1582627336.8869653

У меня следующие вопросы:

  1. Почему код печатает один и тот же токен, даже если аргументы разные.
  2. Что, если разные пользователи попытаются сгенерировать токен в одном и том же временном окне (см. Окно 20-40 секунд), тогда они получат один и тот же токен. Если да, то как этого избежать?
...