auth_totp_skew
在 NGINX 中配置用于 TOTP 验证的允许时间偏差。
Time-based one-time password (TOTP) authentication for NGINX
·
httpserverlocationlimit_except
语法auth_totp_skew ;
默认值none
上下文http, server, location, limit_except
参数1
说明
auth_totp_skew 指令用于在验证基于时间的一次性密码 (TOTP) 时设置允许的时间偏差(以秒为单位)。TOTP 依赖服务器和客户端之间的时间同步;但由于时钟漂移或网络延迟,可能会出现时间差异。通过允许一定的偏差,管理员可以改善用户体验,接受在实际当前时间之前的指定时间窗口内仍被视为有效的 TOTP 值。
该指令接受一个数值参数,用于定义以秒为单位的偏差。例如,偏差为 '1' 表示在当前时间之前或之后一秒内生成的 TOTP 值将被接受为有效。此配置的目的是将因服务器与客户端时钟的细微差异导致的认证失败几率降到最低,从而提高 TOTP 认证在实际场景中的健壮性。
在配置此指令时,请考虑允许较大偏差可能更好地兼容不同时区或时间同步较差的环境中的用户。然而,较大的偏差也可能无意中扩大未授权访问的时间窗口,如果攻击者能够预测或拦截有效的 TOTP 代码,则存在风险。
配置示例
location /protected {
auth_totp_realm "Protected";
auth_totp_file /etc/nginx/totp.conf;
auth_totp_length 8;
auth_totp_reuse off;
auth_totp_skew 1;
auth_totp_step 1m;
auth_totp_cookie "totp-session";
auth_totp_expiry 1d;
}⚠
如果客户端的时钟与服务器的时钟不同步,偏移量为零可能导致频繁的身份验证失败。
⚠
将偏移量设置得很高(例如几分钟)可能会在 TOTP 值被拦截时使系统暴露于重放攻击。