如何为两因素身份验证配置Django Authy

时间:2019-03-15 16:31:09

标签: django django-rest-framework twilio twilio-api twilio-functions

最近几天我一直在研究Django 2因素。我终于到了使Django Twilio电话验证生效的地步。这是工作代码...

from authy.api import AuthyApiClient
from django.conf import settings
from django.shortcuts import render, redirect

from .forms import VerifyForm, TokenForm


authy_api = AuthyApiClient(settings.ACCOUNT_SECURITY_API_KEY)

def SetupView(request):
    if request.method == 'POST':
        form = VerifyForm(request.POST)
        if form.is_valid():
            request.session['phone_number'] = form.cleaned_data['phone_number']
            request.session['country_code'] = form.cleaned_data['country_code']
            authy_api.phones.verification_start(
                form.cleaned_data['phone_number'],
                form.cleaned_data['country_code'],
                via=form.cleaned_data['via']
            )
            return redirect('token_validation')
    else:
        form = VerifyForm()
    return render(request, 'registration/verify.html', {'form': form})


def token_validation(request):
    if request.method == 'POST':
        form = TokenForm(request.POST)
        if form.is_valid():
            verification = authy_api.phones.verification_check(
                request.session['phone_number'],
                request.session['country_code'],
                form.cleaned_data['token']
            )
            if verification.ok():
                request.session['is_verified'] = True
                return redirect('verified')
            else:
                for error_msg in verification.errors().values():
                    form.add_error(None, error_msg)
    else:
        form = TokenForm()
    return render(request, 'registration/token_validation.html', {'form': form})

def verified(request):
    if not request.session.get('is_verified'):
        return redirect('phone_verification')
    return render(request, 'registration/verified.html')

使用上面的代码,并在我的settings.py文件中指定ACCOUNT_SECURITY_API_KEY,是获取上面的代码并将4位数字的代码传递到我的手机所需要的全部。进度...

但是,我真正要完成的工作是利用AUTHY应用程序提供登录代码。...我看了下一页... https://www.twilio.com/docs/authy/quickstart/two-factor-authentication-python-django#linkcode并且该代码未加载在此页面上...没有人有经验或知道在哪里寻找,以便我可以让Django与Authy一起使用并获取每20秒更改一次的代码,而不是上面显示的4位数字的示例?预先感谢您的任何想法。

1 个答案:

答案 0 :(得分:0)

这里是Twilio开发人员的传播者。

这里的问题是您正在使用verification API,这是一次电话号码验证,并且不使用Authy应用。

相反,您需要APIs for one time passwords。我不知道您链接的教程有什么问题,但是可以在以下位置找到该应用程序的所有代码:https://github.com/TwilioDevEd/account-security-quickstart-django

让我知道是否有帮助。