迁移Authy TOTP进行验证



我们正在尝试将TOTP因子从Authy迁移到Twilio中的Verify API。我们参考以下文章中的相同

https://www.twilio.com/docs/authy/export-totp-secret-seed-for-migrating-to-verify-totp#export-总机密用户需求

从上面的URL,我们能够精确定位如何提取Authy中创建的秘密。但是,我们不确定如何使用从Authy中提取的秘密来在Verify API中创建一个因素。你能详细告诉我们如何做到这一点吗?

由于我不知道您使用的是什么编程语言,我将使用cURL命令,您可以将这些HTTP请求转换为您选择的语言。

首先,您需要请求Twilio支持为您的Authy应用程序启用迁移工具。当你导航到Authy应用程序时,他们会要求你提供Authy应用ID,你可以在Twilio控制台的URL中找到。

然后,您可以使用您之前链接的导出TOTP机密API:

curl -i "https://api.authy.com/protected/json/users/$AUTHY_USER_ID/secret/export" 
-H "X-Authy-API-Key: $AUTHY_API_KEY"
  • $AUTHY_USER_ID是您所在的个人Authy用户ID尝试将他们的TOTP因子移动到验证服务
  • $AUTHY_API_KEY是Authy应用程序的API密钥

输出如下:

{"secret":"[REDACTED]","otp":"[REDACTED]","success":true}
  • secret是您在验证服务中创建Factor所需要的
  • otp是一次性密码,与用户在TOTP消费者应用程序(Authy/Google Authenticator/等(中看到的密码相同

现在您可以使用验证API创建一个新的因素:

curl -X POST "https://verify.twilio.com/v2/Services/$VERIFY_SERVICE_SID/Entities/$IDENTITY/Factors" 
--data-urlencode "Binding.Secret=$EXPORTED_AUTHY_SECRET" 
--data-urlencode "Config.Alg=sha1" 
--data-urlencode "Config.TimeStep=30" 
--data-urlencode "Config.CodeLength=6" 
--data-urlencode "Config.Skew=1" 
--data-urlencode "FriendlyName=John's Phone" 
--data-urlencode "FactorType=totp" 
-u $TWILIO_ACCOUNT_SID:$TWILIO_AUTH_TOKEN
  • $VERIFY_SERVICE_SID是验证服务的SID
  • $IDENTITY是用户的唯一ID,长度在8到64个字符之间,由外部系统生成,例如用户的UUID、GUID或SID。如果标识还不存在,它将作为此API调用的一部分自动创建
  • $EXPORTED_AUTHY_SECRET是早些时候Authy Export API返回的secret
  • $TWILIO_ACCOUNT_SID是您的Twilio帐户SID
  • $TWILIO_AUTH_TOKEN是您的Twilio Auth代币

此处记录了此API调用:https://www.twilio.com/docs/verify/quickstarts/totp#create-一个新的到第三方的

您可以使用Authy Export API返回的otp来验证您创建的新Factor:

curl -X POST "https://verify.twilio.com/v2/Services/$VERIFY_SERVICE_SID/Entities/$IDENTITY/Factors/$FACTOR_SID" 
--data-urlencode "AuthPayload=$OTP_CODE" 
-u $TWILIO_ACCOUNT_SID:$TWILIO_AUTH_TOKEN
  • $FACTOR_SID是您新创建的Factor的SID
  • $OTP_CODE是Authy Export API返回的otp代码

此处记录了此API调用:https://www.twilio.com/docs/verify/quickstarts/totp#verify-用户已成功注册

就是这样!如果你想验证用户的OTP代码,你可以创建这样的挑战:

curl -X POST "https://verify.twilio.com/v2/Services/$VERIFY_SERVICE_SID/Entities/$IDENTITY/Challenges" 
--data-urlencode "AuthPayload=$OTP_CODE" 
--data-urlencode "FactorSid=$FACTOR_SID" 
-u $TWILIO_ACCOUNT_SID:$TWILIO_AUTH_TOKEN
  • $OTP_CODE是用户提供给应用程序的otp代码

此处记录了此API调用:https://www.twilio.com/docs/verify/quickstarts/totp#validate-a-token


从Authy API导出并在验证中创建新因子时,您需要快速执行此操作,以便使用Authy导出中提供的OTP代码验证新因子。以下是我如何使用bash脚本为一个Authy用户做的:

#!/bin/bash
EXPORTED_RESPONSE=$(
curl -s "https://api.authy.com/protected/json/users/$AUTHY_USER_ID/secret/export" 
-H "X-Authy-API-Key: $AUTHY_API_KEY" 
)
echo "$EXPORTED_RESPONSE"
EXPORTED_AUTHY_SECRET=$(echo -n "$EXPORTED_RESPONSE" | jq -r .secret)
OTP_CODE=$(echo -n "$EXPORTED_RESPONSE" | jq -r .otp)
IDENTITY=$(uuidgen)
NEW_FACTOR_RESPONSE=$(curl -s -X POST "https://verify.twilio.com/v2/Services/$VERIFY_SERVICE_SID/Entities/$IDENTITY/Factors" 
--data-urlencode "Binding.Secret=$EXPORTED_AUTHY_SECRET" 
--data-urlencode "Config.Alg=sha1" 
--data-urlencode "Config.TimeStep=30" 
--data-urlencode "Config.CodeLength=6" 
--data-urlencode "Config.Skew=1" 
--data-urlencode "FriendlyName=John's Phone" 
--data-urlencode "FactorType=totp" 
-u $TWILIO_ACCOUNT_SID:$TWILIO_AUTH_TOKEN)
echo "$NEW_FACTOR_RESPONSE"
FACTOR_SID=$(echo -n "$NEW_FACTOR_RESPONSE" | jq -r .sid)
VERIFY_FACTOR_RESPONSE=$(curl -s -X POST "https://verify.twilio.com/v2/Services/$VERIFY_SERVICE_SID/Entities/$IDENTITY/Factors/$FACTOR_SID" 
--data-urlencode "AuthPayload=$OTP_CODE" 
-u $TWILIO_ACCOUNT_SID:$TWILIO_AUTH_TOKEN)
echo "$VERIFY_FACTOR_RESPONSE"

应在执行此操作之前设置前面描述的各种环境变量。

最新更新