Abe Estrada

AWS Cloudfront Edge Auth Cognito v2

Unos días después de publicar el post sobre cómo para validar JWT de Cognito en Lambda@Edge , encontré que AWS tiene una librería (aws-jwt-verify ) que reduce considerablemente el código necesario para realizar este tipo de validaciones.

Esta es la versión actualizada:

const { CognitoJwtVerifier } = require("aws-jwt-verify");

const jwtVerifier = CognitoJwtVerifier.create({
  userPoolId: "us-east-1_XXXXXXXXX",
  tokenUse: "access",
  clientId: "xxxxxxxxxxxxxxxxxxxxxxxxxx",
});

exports.handler = async (event) => {
  const request = event.Records[0].cf.request;
  const headers = request.headers || {};

  // CORS Preflight
  if (`${request.method}`.toUpperCase() === "OPTIONS") {
    return request;
  }

  try {
    // Strip out "Bearer " to extract JWT token only
    const accessToken = headers.authorization[0].value.slice(7);
    await jwtVerifier.verify(accessToken);
  } catch (err) {
    // Invalid token.
    return { status: "401" body: "Unauthorized" };
  }

  // Remove authorization header
  delete request.headers.authorization;

  return request;
};
Relacionados