在密钥斗篷中使用 TOTP

Using TOTP in keycloak

我一直在使用 keycloak 1.9.1(如果有任何区别,则进行 docker 化),但一直无法弄清楚如何让 TOTP 工作。我已经用 android 的 FreeOTP 和 Google 的验证器试过了,仍然没有成功。 我可以指定 keycloak 来使用 TOTP,登录并显示 QR 码,用我的 phone 扫描它并获取 OTP,但是当我输入它时,它总是被拒绝。 目前有人在用这个吗?

每当我遇到 "Invalid authenticator code" 错误时,我都会通过将计算机时钟与智能 phone 时钟同步来修复它。如果您的计算机从服务器获取时间,而服务器甚至关闭了几秒钟,您将无法注册或使用 TOTP。在这种情况下,您可以更正时间,但当您的计算机与服务器同步时,您将再次失去访问权限。

如果您的服务器和您 phone 的时间不一致,TOTP 注册和登录 将无法工作 ,因为您的 phone的代码和服务器的代码不匹配。另外,您可能想检查它们是否在同一时区。

此外,您可以在 身份验证 -> OTP 策略 屏幕中增加 "Look Ahead Window"(抱歉,我还无法嵌入图像)。

"Look Ahead Window" option

这个选项让 Keycloak 考虑一些即将到来的未来代码,从而对时钟偏差有一定的容忍度。然而,似乎这个选项不允许 Keycloak 向后看,所以一个慢速智能 phone 时钟可能无法工作,即使 "Look Ahead Window" 设置为最大值。

在身份验证 → OTP 策略下检查您的 OTP 哈希算法。

因为google 验证器只支持 SHA1。如果您的算法不同,则使用免费 OTP。