[PYTHON] Zwei-Faktor-Authentifizierung mit Cognito + Amplify (Geben Sie zur Authentifizierung ID / PW / "Zwei-Faktor-Code-Wert" auf dem Anmeldebildschirm ein)

Überblick

Implementierung

Seite verstärken

Melden Sie sich unten an.

Auth.signIn({"username": user_id, "password": user_password, "validationData": { "code": "WinAuth_code" }})
//* Code kann mit dem Vorauthentifizierungsauslöser von Cognito übernommen werden

WENN Verweis auf "Amplify.signIn ()"

Cognito Seite

Der Vorauthentifizierungsauslöser wird verwendet, um den "Code" von "Validierungsdaten" abzurufen und den Code zu validieren.

Lambda für Pre-Authentication-Trigger

import boto3

def lambda_handler(event, context):

    #Beispielcode zum Abrufen der mit dem Benutzernamen verknüpften Gruppe
    client = boto3.client('cognito-idp')
    response = client.admin_list_groups_for_user(UserPoolId=event['userPoolId'], Username=event['userName'] ) 

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

    #Codeüberprüfung durchführen * Quelle weggelassen
    #Ändern Sie die Meldung abhängig von der Fehlerbedingung
    # ※
    #Sie können die Nachricht nur im Fehlerfall ändern (Sie können den HTTP-Status nicht ändern)
    #Wenn der Code falsch ist, wird eine dedizierte Nachricht an Amplify zurückgegeben.
    raise Exception("Cannot authenticate users from this user pool app client")  

    return event

Vorauthentifizierung löst Lambda-Protokoll aus (Inhalt des Lambda-Handler-Arguments event)

Beachten Sie Folgendes

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

Zwei-Faktor-Authentifizierung mit Cognito + Amplify (Geben Sie zur Authentifizierung ID / PW / "Zwei-Faktor-Code-Wert" auf dem Anmeldebildschirm ein)
Memo, um den Wert auf der HTML-Javascript-Seite mit Jupiter zu erhalten
Die Geschichte des Versuchs, SSH_AUTH_SOCK mit LD_PRELOAD auf dem Bildschirm veraltet zu halten