[PYTHON] Authentification à deux facteurs avec Cognito + Amplify (entrez ID / PW / "valeur de code à deux facteurs" sur l'écran de connexion pour vous authentifier)

Aperçu

la mise en oeuvre

Amplifier le côté

Connectez-vous ci-dessous.

Auth.signIn({"username": user_id, "password": user_password, "validationData": { "code": "WinAuth_code" }})
//* Le code peut être pris avec le déclencheur de pré-authentification de Cognito

ʻAmplify.signIn () `Référence IF

Côté Cognito

Le déclencheur de pré-authentification est utilisé pour obtenir le «code» de «validationData» et valider le code.

Lambda pour le déclencheur de pré-authentification

import boto3

def lambda_handler(event, context):

    #Exemple de code pour obtenir le groupe associé au nom d'utilisateur
    client = boto3.client('cognito-idp')
    response = client.admin_list_groups_for_user(UserPoolId=event['userPoolId'], Username=event['userName'] ) 

    print("---- ---- ---- ---- ---- ---- ---- ")
    print(event)
    print(response)
    print("---- ---- ---- ---- ---- ---- ---- ")

    #Exécuter la vérification du code * Source omise
    #Changer le message en fonction de la condition de l'erreur
    # ※
    #Vous ne pouvez modifier le message qu'en cas d'erreur (vous ne pouvez pas modifier l'état HTTP), donc
    #Si le code est incorrect, un message dédié sera renvoyé à Amplify.
    raise Exception("Cannot authenticate users from this user pool app client")  

    return event

Journal Lambda du déclencheur de pré-authentification (contenu de l'argument du gestionnaire Lambda ʻevent`)

Faites attention à ce qui suit

{'callerContext': {'awsSdkVersion': 'aws-sdk-unknown-unknown',
                   'clientId': 'xxxxxxxxxxxxxxxxxxxxxxxxxx'},
 'region': 'ap-northeast-1',
 'request': {'userAttributes': {'cognito:token_nbf': '1582593027733',
                                'cognito:user_status': 'CONFIRMED',
                                'sub': '67eb1ed1-240b-4861-9844-f82ebc08d2f8'},
             'userNotFound': False,
             'validationData': {'aaaa': '12345'}},
 'response': {},
 'triggerSource': 'PreAuthentication_Authentication',
 'userName': 'hogehoge',
 'userPoolId': 'ap-northeast-1_xxxxxxxxx',
 'version': '1'}

Recommended Posts

Authentification à deux facteurs avec Cognito + Amplify (entrez ID / PW / "valeur de code à deux facteurs" sur l'écran de connexion pour vous authentifier)
Mémo pour obtenir la valeur côté html-javascript avec jupyter
L'histoire de la tentative de pousser SSH_AUTH_SOCK obsolète avec LD_PRELOAD à l'écran