如何在Amazon Cognito的多因素身份验证上设置“ mfa_setup”挑战?

时间:2019-02-11 06:19:25

标签: amazon-web-services amazon-cognito multi-factor-authentication

我一直坚持使用Google Authenticator为亚马逊Cognito设置MFA。我错过任何一步了吗?

我尝试按照本指南“ https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-settings-mfa-totp.html”进行操作。

我将会话传递给“ associate_software_token”,并获取了密钥,并将其转换为QR码。

将其转换为QR后,我从playstore下载了Google身份验证器并尝试继续。遗憾的是,这是我遇到的问题,Google身份验证器无法识别QR码。

def get(self):
    # This is where the secret key which will be later used as password.
    data = request.args
    client = boto3.client('cognito-idp')
    secret_response = client.associate_software_token(Session=data["session"])
    # Create QR
    try:
        img = qrcode.make(secret_response.get('SecretCode'))
    except ClientError as e:
        return self.handle_boto_error(e)

    temp_assets = os.path.join(ASSETS_DIRS, 'temp/')

    filename = secure_filename(secret_response.get('SecretCode') + '.png')
    to_save_on = os.path.join(temp_assets, filename)
    print(secret_response.get('SecretCode'))
    img.save(to_save_on)

    return send_file(to_save_on, mimetype='image/png'), status.HTTP_200_OK

我希望它能给我TOTP,它将完成Congito Pool的整个身份验证过程。

1 个答案:

答案 0 :(得分:0)

通过将qr转换为正确的格式来解决此问题,即:

"link = f"otpauth://totp/{SITE_NAME}:{username}?secret={secret_code}&issuer={SITE_NAME}"

而不是直接将密码解析为QR Code。