@cloudy-with-a-chance-of-meatballs/cdk-lambda-token-authorizer-jwt
Version:
Add a lambda function to your aws-rest-api-gateway which can be used as a token authorizer
49 lines • 7.69 kB
JavaScript
;
var _a;
Object.defineProperty(exports, "__esModule", { value: true });
exports.TokenAuthorizerJwtFunction = void 0;
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
const path = require("path");
const lambda = require("aws-cdk-lib/aws-lambda");
var FnEnvVars;
(function (FnEnvVars) {
FnEnvVars["JwksUri"] = "TOKEN_AUTHORIZER_JWKS_URI";
FnEnvVars["JwksKid"] = "TOKEN_AUTHORIZER_JWKS_KID";
FnEnvVars["Secret"] = "TOKEN_AUTHORIZER_JWT_VERIFICATION_SECRET";
FnEnvVars["Schema"] = "TOKEN_AUTHORIZER_JWT_VALIDATOR_SCHEMA_JSON";
})(FnEnvVars || (FnEnvVars = {}));
const lambdaEnvVars = (options) => {
let e = (options.environment ?? {});
switch (options.tokenAuthorizerOptions.payloadValidationStrategy?.strategyName || '') {
case 'schema':
e[FnEnvVars.Schema] = options.tokenAuthorizerOptions.payloadValidationStrategy.schema;
}
switch (options.tokenAuthorizerOptions.verificationStrategy.strategyName) {
case 'argument':
e[FnEnvVars.Secret] = options.tokenAuthorizerOptions.verificationStrategy.secret;
}
switch (options.tokenAuthorizerOptions.verificationStrategy.strategyName) {
case 'jwksFromUriByKid':
e[FnEnvVars.JwksUri] = options.tokenAuthorizerOptions.verificationStrategy.uri;
e[FnEnvVars.JwksKid] = options.tokenAuthorizerOptions.verificationStrategy.kid;
}
return e;
};
class TokenAuthorizerJwtFunction extends lambda.Function {
constructor(scope, id, props) {
super(scope, id, {
...props,
handler: 'index.authHandler',
code: lambda.Code.fromAsset(path.join(__dirname, '../assets/function/src/authorizer.lambda')),
runtime: lambda.Runtime.NODEJS_16_X,
environment: {
...(props.environment || {}),
...(lambdaEnvVars(props)),
},
});
}
}
exports.TokenAuthorizerJwtFunction = TokenAuthorizerJwtFunction;
_a = JSII_RTTI_SYMBOL_1;
TokenAuthorizerJwtFunction[_a] = { fqn: "@cloudy-with-a-chance-of-meatballs/cdk-lambda-token-authorizer-jwt.TokenAuthorizerJwtFunction", version: "0.1.24" };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2QkFBNkI7QUFDN0IsaURBQWlEO0FBK0JqRCxJQUFLLFNBS0o7QUFMRCxXQUFLLFNBQVM7SUFDWixrREFBcUMsQ0FBQTtJQUNyQyxrREFBcUMsQ0FBQTtJQUNyQyxnRUFBbUQsQ0FBQTtJQUNuRCxrRUFBcUQsQ0FBQTtBQUN2RCxDQUFDLEVBTEksU0FBUyxLQUFULFNBQVMsUUFLYjtBQUVELE1BQU0sYUFBYSxHQUFHLENBQUMsT0FBdUMsRUFBTyxFQUFFO0lBQ3JFLElBQUksQ0FBQyxHQUFJLENBQUMsT0FBUSxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQVMsQ0FBQztJQUM5QyxRQUFRLE9BQU8sQ0FBQyxzQkFBdUIsQ0FBQyx5QkFBeUIsRUFBRSxZQUFZLElBQUksRUFBRSxFQUFFO1FBQ3JGLEtBQUssUUFBUTtZQUNYLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFDLHNCQUF1QixDQUFDLHlCQUEwQixDQUFDLE1BQU0sQ0FBQztLQUMzRjtJQUNELFFBQVEsT0FBTyxDQUFDLHNCQUFzQixDQUFDLG9CQUFvQixDQUFDLFlBQVksRUFBRTtRQUN4RSxLQUFLLFVBQVU7WUFDYixDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUM7S0FDcEY7SUFDRCxRQUFRLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLEVBQUU7UUFDeEUsS0FBSyxrQkFBa0I7WUFDckIsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsR0FBRyxPQUFPLENBQUMsc0JBQXNCLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDO1lBQy9FLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEdBQUcsT0FBTyxDQUFDLHNCQUFzQixDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQztLQUNsRjtJQUNELE9BQU8sQ0FBQyxDQUFDO0FBQ1gsQ0FBQyxDQUFDO0FBRUYsTUFBYSwwQkFBMkIsU0FBUSxNQUFNLENBQUMsUUFBUTtJQUM3RCxZQUFtQixLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFxQztRQUVwRixLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNmLEdBQUcsS0FBSztZQUNSLE9BQU8sRUFBRSxtQkFBbUI7WUFDNUIsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLDBDQUEwQyxDQUFDLENBQUM7WUFDN0YsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsV0FBVztZQUNuQyxXQUFXLEVBQUU7Z0JBQ1gsR0FBRyxDQUFDLEtBQUssQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDO2dCQUM1QixHQUFHLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQzFCO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUFiSCxnRUFjQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgKiBhcyBsYW1iZGEgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcblxuLy8gbm90ZTogdW5mb3J0dW5hdGVseSBDIyBqc2lpIGNvbXBpbGF0aW9uIGRvZXMgbm90IGFsbG93IGEgY29tbW9uIGludGVyZmFjZSB3aXRoIHN0cmF0ZWd5TmFtZSBuZWl0aGVyIGEgdW5pb24gdHlwZVxuLy8gQHRvZG8gaG93IHRvIGRlZHVwbGljYXRlIHRoaXM/XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRva2VuVmFsaWRhdGlvblN0cmF0ZWd5QWp2SnNvblNjaGVtYVZhbGlkYXRvciB7XG4gIHJlYWRvbmx5IHN0cmF0ZWd5TmFtZTogJ3NjaGVtYSc7XG4gIHJlYWRvbmx5IHNjaGVtYTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElUb2tlblZlcmlmaWNhdGlvblN0cmF0ZWd5QXJndW1lbnQge1xuICByZWFkb25seSBzdHJhdGVneU5hbWU6ICdhcmd1bWVudCc7XG4gIHJlYWRvbmx5IHNlY3JldDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElUb2tlblZlcmlmaWNhdGlvblN0cmF0ZWd5Sndrc0Zyb21VcmlCeUtpZCB7XG4gIHJlYWRvbmx5IHN0cmF0ZWd5TmFtZTogJ2p3a3NGcm9tVXJpQnlLaWQnO1xuICByZWFkb25seSB1cmk6IHN0cmluZztcbiAgcmVhZG9ubHkga2lkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRva2VuQXV0aG9yaXplck9wdGlvbnMge1xuICByZWFkb25seSB2ZXJpZmljYXRpb25TdHJhdGVneTogSVRva2VuVmVyaWZpY2F0aW9uU3RyYXRlZ3lBcmd1bWVudCB8IElUb2tlblZlcmlmaWNhdGlvblN0cmF0ZWd5Sndrc0Zyb21VcmlCeUtpZDtcbiAgcmVhZG9ubHkgcGF5bG9hZFZhbGlkYXRpb25TdHJhdGVneT86IElUb2tlblZhbGlkYXRpb25TdHJhdGVneUFqdkpzb25TY2hlbWFWYWxpZGF0b3I7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVG9rZW5BdXRob3JpemVyRnVuY3Rpb25PcHRpb25zIGV4dGVuZHMgbGFtYmRhLkZ1bmN0aW9uT3B0aW9ucyB7XG4gIHJlYWRvbmx5IHRva2VuQXV0aG9yaXplck9wdGlvbnM6IElUb2tlbkF1dGhvcml6ZXJPcHRpb25zO1xufVxuXG5lbnVtIEZuRW52VmFycyB7XG4gIEp3a3NVcmkgPSAnVE9LRU5fQVVUSE9SSVpFUl9KV0tTX1VSSScsXG4gIEp3a3NLaWQgPSAnVE9LRU5fQVVUSE9SSVpFUl9KV0tTX0tJRCcsXG4gIFNlY3JldCA9ICdUT0tFTl9BVVRIT1JJWkVSX0pXVF9WRVJJRklDQVRJT05fU0VDUkVUJyxcbiAgU2NoZW1hID0gJ1RPS0VOX0FVVEhPUklaRVJfSldUX1ZBTElEQVRPUl9TQ0hFTUFfSlNPTidcbn1cblxuY29uc3QgbGFtYmRhRW52VmFycyA9IChvcHRpb25zOiBUb2tlbkF1dGhvcml6ZXJGdW5jdGlvbk9wdGlvbnMpOiBhbnkgPT4ge1xuICBsZXQgZSA9ICgob3B0aW9ucyEuZW52aXJvbm1lbnQgPz8ge30pIGFzIGFueSk7XG4gIHN3aXRjaCAob3B0aW9ucy50b2tlbkF1dGhvcml6ZXJPcHRpb25zIS5wYXlsb2FkVmFsaWRhdGlvblN0cmF0ZWd5Py5zdHJhdGVneU5hbWUgfHwgJycpIHtcbiAgICBjYXNlICdzY2hlbWEnOlxuICAgICAgZVtGbkVudlZhcnMuU2NoZW1hXSA9IG9wdGlvbnMudG9rZW5BdXRob3JpemVyT3B0aW9ucyEucGF5bG9hZFZhbGlkYXRpb25TdHJhdGVneSEuc2NoZW1hO1xuICB9XG4gIHN3aXRjaCAob3B0aW9ucy50b2tlbkF1dGhvcml6ZXJPcHRpb25zLnZlcmlmaWNhdGlvblN0cmF0ZWd5LnN0cmF0ZWd5TmFtZSkge1xuICAgIGNhc2UgJ2FyZ3VtZW50JzpcbiAgICAgIGVbRm5FbnZWYXJzLlNlY3JldF0gPSBvcHRpb25zLnRva2VuQXV0aG9yaXplck9wdGlvbnMudmVyaWZpY2F0aW9uU3RyYXRlZ3kuc2VjcmV0O1xuICB9XG4gIHN3aXRjaCAob3B0aW9ucy50b2tlbkF1dGhvcml6ZXJPcHRpb25zLnZlcmlmaWNhdGlvblN0cmF0ZWd5LnN0cmF0ZWd5TmFtZSkge1xuICAgIGNhc2UgJ2p3a3NGcm9tVXJpQnlLaWQnOlxuICAgICAgZVtGbkVudlZhcnMuSndrc1VyaV0gPSBvcHRpb25zLnRva2VuQXV0aG9yaXplck9wdGlvbnMudmVyaWZpY2F0aW9uU3RyYXRlZ3kudXJpO1xuICAgICAgZVtGbkVudlZhcnMuSndrc0tpZF0gPSBvcHRpb25zLnRva2VuQXV0aG9yaXplck9wdGlvbnMudmVyaWZpY2F0aW9uU3RyYXRlZ3kua2lkO1xuICB9XG4gIHJldHVybiBlO1xufTtcblxuZXhwb3J0IGNsYXNzIFRva2VuQXV0aG9yaXplckp3dEZ1bmN0aW9uIGV4dGVuZHMgbGFtYmRhLkZ1bmN0aW9uIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBUb2tlbkF1dGhvcml6ZXJGdW5jdGlvbk9wdGlvbnMpIHtcblxuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgLi4ucHJvcHMsXG4gICAgICBoYW5kbGVyOiAnaW5kZXguYXV0aEhhbmRsZXInLFxuICAgICAgY29kZTogbGFtYmRhLkNvZGUuZnJvbUFzc2V0KHBhdGguam9pbihfX2Rpcm5hbWUsICcuLi9hc3NldHMvZnVuY3Rpb24vc3JjL2F1dGhvcml6ZXIubGFtYmRhJykpLFxuICAgICAgcnVudGltZTogbGFtYmRhLlJ1bnRpbWUuTk9ERUpTXzE2X1gsXG4gICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICAuLi4ocHJvcHMuZW52aXJvbm1lbnQgfHwge30pLFxuICAgICAgICAuLi4obGFtYmRhRW52VmFycyhwcm9wcykpLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufSJdfQ==