Come posso passare i ClientMetadata ai trigger Lambda in Amazon Cognito?
Voglio creare un flusso di autenticazione con le API di Amazon Cognito per passare i metadati del cliente ai trigger di AWS Lambda.
Risoluzione
Quando si chiama l'API InitiateAuth con il parametroClientMetadata per avviare l'autenticazione utente in Amazon Cognito, i ClientMetadata sono passati solo ai seguenti trigger Lambda:
A titolo di confronto, è necessario chiamare l'API RespondToAuthChallenge per includere i ClientMetadata in questi trigger Lambda:
- Autenticazione post
- Generazione preliminare di token
- Definire la sfida di autenticazione
- Creare una sfida di autenticazione
- Verifica sfida di autenticazione
Includi il parametro ClientMetadata nella chiamata APIRespondToAuthChallenge per rispondere a una di queste sfide di autenticazione:
- Autenticazione a tempo con una sola password (TOTP) a più fattori (MFA)
- Servizio di messaggistica breve (SMS) per MFA
- Password remota sicura (SRP) del dispositivo
- Sfide di autenticazione personalizzate
Inoltre, il parametro ClientMetadata migliora i flussi di lavoro personalizzati per i trigger del pool di utenti delle funzioni Lambda.
Esempio di chiamata API RespondToAuthChallenge con il parametro ClientMetadata
In questo esempio, un pool di utenti Amazon Cognito è configurato con un client app. Un trigger Lambda post-autenticazione è associato al pool di utenti.
La funzione Lambda denominata lambda\ _handler stampa l'evento che riceve:
import json def lambda_handler(event, context): # TODO implement print(event) return event
**Importante:**Usa la registrazione nel sistema di produzione con attenzione per evitare di esporre dati o segreti al sicuro in Amazon CloudWatch.
Un utente di prova viene creato nel pool di utenti. Quindi, si configura SMS per MFA.
Esempio di richiesta di chiamata all'API InitiateAuth avvia l'accesso dell'utente:
aws cognito-idp initiate-auth --auth-flow USER_PASSWORD_AUTH --auth-parameters USERNAME=test,PASSWORD=Password@123 --client-id 1abcd2efgh34ij5klmnopq456r
Esempio di risposta alla chiamata dell'API InitiateAuth:
{ "ChallengeName": "SMS_MFA", "Session": "1AbcDEfgXXXXX", "ChallengeParameters": { "CODE_DELIVERY_DELIVERY_MEDIUM": "SMS", "CODE_DELIVERY_DESTINATION": "+********1234", "USER_ID_FOR_SRP": "test" } }
L'esempio di richiesta di chiamata all'API RespondToAuthChallenge invia il codice MFA e il parametro ClientMetadata include tutte le informazioni aggiuntive da trasmettere:
aws cognito-idp respond-to-auth-challenge --client-id 9zyxw8vuts76rq5ponmlkj432i --challenge-name SMS_MFA --session "9ZyxWVutXXXXX" --challenge-responses USERNAME=test,SMS_MFA_CODE=654321 --client-metadata KeyName1='string',KeyName2='string'
Esempio di risposta alla chiamata API RespondToAuthChallenge:
{ "ChallengeParameters": {}, "AuthenticationResult": { "AccessToken": "abXXXX", "ExpiresIn": 3600, "TokenType": "Bearer", "RefreshToken": "abXX", "IdToken": "abXXX" } }
Dopo che un utente ha autenticato e ricevuto correttamente i token da Amazon Cognito,viene richiamato il trigger Lambda dopo l'autenticazione.
Trova i risultati del trigger Lambda dopo l'autenticazione negli eventi di log nella console di CloudWatch. Cerca i dettagli del parametroClientMetadata nel corpo dell'evento.
Informazioni correlate
Sfida di autenticazione personalizzata trigger Lambda
Personalizzazione dei flussi di lavoro del pool di utenti con trigger Lambda
Contenuto pertinente
- AWS UFFICIALEAggiornata 9 mesi fa
- AWS UFFICIALEAggiornata 2 anni fa
- AWS UFFICIALEAggiornata 2 anni fa
- AWS UFFICIALEAggiornata 2 anni fa