在根据密钥验证令牌时,是否可以检测 TOTP 令牌/密码的时间步长度(例如 30 秒与 60 秒)?换句话说,步骤时间是否被编程到令牌中?
我正在尝试使用 speakeasy 验证 TOTP 令牌,但我的令牌有 60 秒时间步长,而不是验证器期望的默认 30 秒时间步长。因此,除非我指定时间步长为 60 秒,否则令牌不会验证。当将其转换为 REST API 时,我是否需要要求相关令牌的时间步长作为请求的一部分?
令牌没有编程时间步长,没有。如果您要创建具有 60 秒时间步长的令牌,那么您的验证服务也应始终为 60 秒时间步长。
是的,这是可能的。默认情况下,时间窗口为 30 秒。您可以使用窗口值更改它。 1表示60秒,2表示90秒
// Verify a given token
var tokenValidates = speakeasy.totp.verify({
secret: secret.base32,
encoding: 'base32',
token: '123456',
window: 1
});
// Returns true if the token matches