2017-09-08 3 views
-1

Ich benutze AWS Lambda + Cognito (Benutzerpool + Federated Identity) + API-Gateway. Benutzer authentifizieren sich in der WEB-Anwendung mit amazon-cognito-identity-js und rufen die API mit aws-api-gateway-client auf. API-Gateway-Methoden haben AWS_IAM-Autorisierung. Wie bekomme ich den Benutzernamen (aus dem Benutzerpool) in der Lambda-Funktion?Wie erhalten Sie den aktuellen Benutzernamen in AWS Lambda?

+0

Wie ist das eine andere Frage von Ihren früheren Post (s)? https://stackoverflow.com/questions/46120881/how-to-get-cognito-user-in-aws-lambda https://stackoverflow.com/questions/46108431/using-aws-lambda-with-cognito- und-api-gateway –

+0

Related: https://stackoverflow.com/questions/37963906/how-to-get-user-attributes-username-email-etc-using-cognito-identity-id – jarmod

+0

@MarkB Ich habe entfernt dieser Beitrag – Ildar

Antwort

0

Ändern Sie die an Ihre Lambda-Funktion gesendete Anforderung mit aws-api-gateway-client, um den JWT AccessToken in der Kopfzeile zu übergeben. Möglicherweise müssen Sie ensure your API gateway is configured to pass headers.

Sie sollten diese Token mit einem gemeinsamen geheimen Schlüssel für einen externen Dienst verschlüsseln. Sie müssen es dann in der Lambda-Handler-Funktion dekodieren.

apigClient.invokeApi(
    params, 
    pathTemplate, 
    method, 
    { { headers: { accessToken } } }, 
    body); 

Beachten Sie, dassusing the AccessToken makes sense here da wir über andere Details für den Benutzer nicht gestört werden.

Ein AccessToken wird nach Authentifizierung mit amazon-cognito-identity-js abgerufen.

Sie können dieses Feld in der Kopfzeile der Anforderung in Ihrer Lambda-Handler-Funktion analysieren.

import { util } from 'aws-sdk/global'; 

exports.handler = function(event, context) { 
    // parse access Token from request header 
    const headers = event.headers; 
    const payload = headers.accessToken.split('.')[1]; 

    const { username } = JSON.parse(
    util.base64.decode(
     payload 
    ) 
    .toString('utf8') 
); 

    ... 
}; 
Verwandte Themen