簡體   English   中英

optlib 令牌的到期時間不一致?

[英]optlib token inconsistent expiry time?

我正在使用 otplib: https://github.com/yeojz/otplib

每個用戶都有自己的秘密存儲在數據庫中。 當用戶登錄 2FA 時,我運行totp.generate(secret); 關於用戶的秘密。 我將步長設置為 5 分鍾

const { totp } = require('otplib');
totp.options = { step: 300 }; // 5 minutes

如何確保每次生成令牌時都會從 0 秒開始? 目前,每個令牌的剩余時間在 [0, 300] 之間,具體取決於我生成的時間。 totp 不是我想用的嗎?

例如,考慮當用戶通過登錄生成一個 totp 時,他們的剩余時間是 1 秒。 當他們輸入他們的 pin 時,otp 已經改變,所以它會出錯,即使他們剛剛生成它。

我想要一致的時間。 當我生成令牌時,我希望令牌在 300 秒內有效,而不是隨機 [0,300]。 我如何實現這一目標?

TOTP 不是要生成在接下來的n秒內有效的代碼。

TOTP 是關於生成一個密鑰,當輸入一個算法時,輸出對應於n秒當前 window 的代碼。

這就是 TOTP 客戶端顯示距離下一個 window 為n秒的剩余時間的原因。

如果用戶在 window 到期之前沒有時間輸入和提交當前代碼,那么他們應該等待下一個。

您可能會想,如果用戶在 window 過期后立即提交代碼,那么您仍然可以接受它,但這是一個不好的做法

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM