Come posso passare i ClientMetadata ai trigger Lambda in Amazon Cognito?

3 minuti di lettura
0

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:

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

AWS UFFICIALE
AWS UFFICIALEAggiornata un anno fa