Как настроить Django Authy для двухфакторной аутентификации - PullRequest
0 голосов
/ 15 марта 2019

Последние два дня я исследовал фактор Джанго 2. Я наконец-то дошел до того, что заставил работать проверку телефона Джанго Твилио. Вот код рабочий код ...

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')

Использование вышеуказанного кода вместе с указанием ACCOUNT_SECURITY_API_KEY в моем файле settings.py - это все, что требовалось для получения кода выше, чтобы передать 4-значный код на мой телефон. Прогресс ...

Однако то, что я действительно пытаюсь сделать, это использовать приложение AUTHY для предоставления кода входа в систему ... Я посмотрел на следующую страницу ... https://www.twilio.com/docs/authy/quickstart/two-factor-authentication-python-django#linkcode И код не загрузить на этой странице ... кто-нибудь имеет опыт или знает, где искать, чтобы я мог заставить Django работать с Authy и получать код, который меняется каждые 20 секунд, в отличие от примера с 4-значным выводом, показанного выше? Заранее спасибо за любые мысли.

1 Ответ

0 голосов
/ 22 марта 2019

Разработчик Twilio здесь.

Ваша проблема здесь в том, что вы используете API проверки , который предназначен для одноразовой проверки номера телефона и не использует приложение Authy.

Вместо этого вы хотите API для одноразовых паролей .Я не знаю, что не так с учебником, на который вы ссылаетесь, но весь код приложения можно найти здесь: https://github.com/TwilioDevEd/account-security-quickstart-django.

Дайте мне знать, поможет ли это вообще.

...