无法通过Java API验证Authy TOTP的问题求助
Twilio Verify TOTP验证失败及配置问题
我尝试通过Authy移动应用和TOTP完成用户身份验证,按照官方指南编写了两个测试用例。目前可以成功创建Factor,但无论如何操作都无法验证该Factor,同时还遇到配置参数不生效的问题,具体细节如下:
步骤1:为新用户创建新的Factor
@Test public void testCreateTotpFactor() { log.info("Twilio ACCOUNT_SID=" + ACCOUNT_SID); long now = new Date().getTime(); String userUUID = UUID.randomUUID().toString(); String username = "TwilioUser" + now; Twilio.init(ACCOUNT_SID, AUTH_TOKEN); // 创建新的TOTP Factor NewFactor newFactor = NewFactor.creator( SERVICE_SID, userUUID, username, NewFactor.FactorTypes.TOTP) .setConfigAppId("org.liquido") //.setConfigCodeLength(6) //.setConfigSkew(1) //.setConfigTimeStep(60) .create(); System.out.println("========================"); System.out.println(newFactor); System.out.println("========================"); System.out.println("TOTP URL " + newFactor.getBinding().get("uri")); System.out.println("Twilio Username: " + username); System.out.println("Twilio userUUID: " + userUUID); System.out.println("Twilio Factor_SID: " + newFactor.getSid()); System.out.println("========================"); }
步骤2:从TOTP URL生成二维码
这一步可以正常执行,我能在Authy应用中扫描二维码,但如果取消注释代码中的setConfigTimeStep(60),该参数并未生效,时间步长始终为30。请问该如何检查、测试或调试这个配置问题?
步骤3:输入首个TOTP验证Factor
注:此测试用例中的数据需要根据上一步返回的值手动修改,authToken需从Authy应用中获取。
@Test // 无法自动测试,需手动修改参数后执行 public void testVerifyTotpFactor() { // 手动设置上一步测试返回的参数 String userUUID = "<userUUID from above>"; String FACTOR_SID = "<factorSID from above>"; String authToken = "123456"; // Authy应用中显示的当前令牌 Twilio.init(ACCOUNT_SID, AUTH_TOKEN); System.out.println("==========================="); System.out.println("可用的TOTP Factors (FACTOR_SID):"); // 列出可用的Factors ResourceSet<Factor> factors = Factor.reader( SERVICE_SID, userUUID) .read(); for(Factor record : factors) { System.out.println(record); // 这一步正常,能看到创建的Factor } System.out.println("==========================="); // 更新Factor(验证操作) Factor factor = Factor.updater( SERVICE_SID, userUUID, FACTOR_SID) .setAuthPayload(authToken).update(); System.out.println(factor); assertEquals(Factor.FactorStatuses.VERIFIED, factor.getStatus(), "Factor应该处于已验证状态"); // 此处始终失败! log.info("成功验证TOTP Factor"); }
执行上述验证代码后,Factor始终返回“unverified”状态。请问我遗漏了什么?所有方法的参数是否正确?
内容的提问来源于stack exchange,提问作者Robert
相关产品推荐
相关产品推荐

