J'utilise AWS Lambda + Cognito (pool d'utilisateurs + identité fédérée) + passerelle API. Les utilisateurs s'authentifient dans l'application WEB avec amazon-cognito-identity-js et invoquent API avec aws-api-gateway-client. Les méthodes API Gateway ont un autorisateur AWS_IAM. Comment obtenir le nom d'utilisateur (à partir du pool d'utilisateurs) dans la fonction Lambda?Comment obtenir le nom d'utilisateur actuel dans AWS Lambda?
-1
A
Répondre
0
Modifiez la demande envoyée à votre fonction Lambda en utilisant aws-api-gateway-client
pour passer le JWT AccessToken
dans l'en-tête. Vous devrez peut-être ensure your API gateway is configured to pass headers.
Vous devez chiffrer ce jeton à l'aide d'un secret partagé pour un service externe. Vous devrez ensuite le décoder dans la fonction de gestionnaire lambda.
apigClient.invokeApi(
params,
pathTemplate,
method,
{ { headers: { accessToken } } },
body);
Notez queusing the AccessToken
makes sense here puisque nous ne sommes pas pris la peine d'autres détails pour les utilisateurs. Un AccessToken
est obtenu après authentification en utilisant amazon-cognito-identity-js
.
Vous pouvez analyser ce champ à partir de l'en-tête de la demande dans votre fonction de gestionnaire lambda.
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')
);
...
};
En quoi cette question est-elle différente de vos messages précédents? https://stackoverflow.com/questions/46120881/how-to-get-cognito-user-in-aws-lambda https://stackoverflow.com/questions/46108431/using-aws-lambda-avec-cognito- et-api-gateway –
Connexes: https://stackoverflow.com/questions/37963906/how-to-get-user-attributes-username-email-etc-using-cognito-identity-id – jarmod
@MarkB J'ai supprimé ce poste – Ildar