speakeasy npm: vai trò của "step", "time" và "window" là gì?



  • Chào mọi người !
    Em đang làm phần generate ra 1 mã OTP bằng speakeasy.
    http://speakeasyjs.github.io/speakeasy/docs/speakeasy/2.0.0/global.html#totp
    Nhưng khi đọc document em không hiểu tác dụng và sự khác nhau của "time", "step" và "window" trong options của các method speakeasy.
    Mong được các anh giải đáp dùm em. Em cảm ơn !



  • @thanh-nam-trần

    • step là chênh lệnh thời gian một mã auth token. Ex: step = 60 thì chênh lệch thời gian kiểm tra của hàm verify sẽ là 60s
    • window là số lần kiểm tra chênh lệch của token. Nếu window=3step=60 thì khi kiểm tra token đưa vào, nó sẽ kiểm tra lại các token từ thời gian +/- 180s tức là token tại (-180s,-120s,-60s,0,+60s,+120s,+180s) so với điểm hiện tại của hệ thống, và nếu token đưa vào trùng với một trong các token trước/sau đó , nó sẽ đưa ra giá trị chênh lệch .Ex: verify trả về {delta:-2} tức là token được check trùng với token trước đó -120s => token của bạn hợp lệ => bạn được đăng nhập.
    • time chỉ dùng khi tạo/xác thực một token tại chính xác một thời điểm. Ex: tại {time:1469437604,step:60} => token = 425125 nhưng do lí do nào đó thay vì nhập token luôn, bạn phải chờ 45 phút để nhập token, tức time=1469437604+60*45 =1469440304 khi đưa vào hàm verify {time:1469440304,step:60,window:120} => {delta:-45} như vậy token đó của bạn vẫn hợp lệ (chưa hết hạn).


  • @hidemanvn vậy cái step có giống như là thời gian hết hạn của OTP không anh ?
    Mục đích của em đang làm là tạo 1 cái OTP trong 1 khoảng thời gian nhất định client phải nhập đúng đoạn OTP đó để thực hiện bước tiếp theo nếu không thi cái OTP đó sẽ hết hạn.



  • @thanh-nam-trần
    đúng, khi không config optionwindow thì maxTime = step. Nhưng cần chú ý là khi verify token cũng phải để giá trị step bằng giá trị step khi tạo token.



  • @hidemanvn Ok. Em cảm ơn anh :D


Log in to reply