我一直在使用 keycloak 1.9.1(如果这有什么不同,则使用 dockerized)并且无法弄清楚如何让 TOTP 工作。我已经用android的FreeOTP以及谷歌的身份验证器试过了,但还是没有运气。我可以指定 keycloak 来使用 TOTP,登录并显示 QR 码,用我的手机扫描它并获取 OTP,但是当我输入它时它总是被拒绝。目前有没有人有这个工作?
问问题
5277 次
2 回答
10
每当我收到“无效的验证码”错误时,我都会通过将计算机的时钟与智能手机的时钟同步来修复它。如果您的计算机从服务器获取时间,而服务器甚至关闭了几秒钟,您将无法注册或使用 TOTP。在这种情况下,您可以更正时间,但当您的计算机与服务器同步时,您将再次失去访问权限。
如果您的服务器和手机时间之间存在偏差,则 TOTP 注册和登录将无法正常工作,因为您的手机代码和服务器代码不匹配。此外,您可能想检查它们是否在同一时区。
此外,您可以在Authentication -> OTP Policy屏幕中增加“Look Ahead Window” (抱歉,我还无法嵌入图像)。
这个选项通过让 Keycloak 考虑一些即将到来的未来代码,让 Keycloak 对时钟偏差有一定的容忍度。但是,此选项似乎不允许 Keycloak 向后看,因此即使“向前看窗口”设置为最大,慢速智能手机时钟也可能无法工作。
于 2016-04-17T18:29:43.960 回答
1
在 Authentication → OTP Policy 下检查您的 OTP 哈希算法。
因为谷歌身份验证器仅支持 SHA1。如果您的算法不同,请使用免费 OTP。
于 2020-06-12T07:22:17.267 回答