我们正在尝试将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"
应在执行此操作之前设置前面描述的各种环境变量。