@liflig/cdk-cloudfront-auth 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +63 -0
- package/dist/check-auth/index.js +2 -0
- package/dist/check-auth/index.js.LICENSE.txt +17 -0
- package/dist/generate-secret/index.js +1 -0
- package/dist/http-headers/index.js +2 -0
- package/dist/http-headers/index.js.LICENSE.txt +6 -0
- package/dist/parse-auth/index.js +2 -0
- package/dist/parse-auth/index.js.LICENSE.txt +31 -0
- package/dist/refresh-auth/index.js +2 -0
- package/dist/refresh-auth/index.js.LICENSE.txt +31 -0
- package/dist/sign-out/index.js +2 -0
- package/dist/sign-out/index.js.LICENSE.txt +17 -0
- package/lib/client-secret.d.ts +10 -0
- package/lib/client-secret.js +54 -0
- package/lib/client-update.d.ts +14 -0
- package/lib/client-update.js +59 -0
- package/lib/cloudfront-auth.d.ts +132 -0
- package/lib/cloudfront-auth.js +267 -0
- package/lib/generate-secret.d.ts +15 -0
- package/lib/generate-secret.js +71 -0
- package/lib/handlers/check-auth.d.ts +7 -0
- package/lib/handlers/generate-secret.d.ts +9 -0
- package/lib/handlers/http-headers.d.ts +1 -0
- package/lib/handlers/parse-auth.d.ts +1 -0
- package/lib/handlers/refresh-auth.d.ts +1 -0
- package/lib/handlers/sign-out.d.ts +1 -0
- package/lib/handlers/util/axios.d.ts +4 -0
- package/lib/handlers/util/axios.js +42 -0
- package/lib/handlers/util/base64.d.ts +8 -0
- package/lib/handlers/util/base64.js +26 -0
- package/lib/handlers/util/cloudfront.d.ts +17 -0
- package/lib/handlers/util/cloudfront.js +102 -0
- package/lib/handlers/util/config.d.ts +26 -0
- package/lib/handlers/util/config.js +48 -0
- package/lib/handlers/util/cookies.d.ts +29 -0
- package/lib/handlers/util/cookies.js +115 -0
- package/lib/handlers/util/jwt.d.ts +17 -0
- package/lib/handlers/util/jwt.js +59 -0
- package/lib/handlers/util/logger.d.ts +16 -0
- package/lib/handlers/util/logger.js +55 -0
- package/lib/handlers/util/nonce.d.ts +9 -0
- package/lib/handlers/util/nonce.js +47 -0
- package/lib/index.d.ts +2 -0
- package/lib/index.js +19 -0
- package/lib/lambdas.d.ts +33 -0
- package/lib/lambdas.js +88 -0
- package/package.json +75 -0
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.decodeIdToken = exports.validate = void 0;
|
|
7
|
+
const jsonwebtoken_1 = require("jsonwebtoken");
|
|
8
|
+
const jwks_rsa_1 = __importDefault(require("jwks-rsa"));
|
|
9
|
+
// jwks client is cached at this scope so it can be reused
|
|
10
|
+
// across Lambda invocations.
|
|
11
|
+
let jwksRsa;
|
|
12
|
+
function isRsaSigningKey(key) {
|
|
13
|
+
return "rsaPublicKey" in key;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Retrieves the public key that corresponds to the private key with
|
|
17
|
+
* which the token was signed.
|
|
18
|
+
*/
|
|
19
|
+
async function getSigningKey(jwksUri, kid) {
|
|
20
|
+
if (!jwksRsa) {
|
|
21
|
+
jwksRsa = (0, jwks_rsa_1.default)({ cache: true, rateLimit: true, jwksUri });
|
|
22
|
+
}
|
|
23
|
+
const jwk = await jwksRsa.getSigningKey(kid);
|
|
24
|
+
return isRsaSigningKey(jwk) ? jwk.rsaPublicKey : jwk.publicKey;
|
|
25
|
+
}
|
|
26
|
+
async function validate(jwtToken, jwksUri, issuer, audience) {
|
|
27
|
+
const decodedToken = (0, jsonwebtoken_1.decode)(jwtToken, { complete: true });
|
|
28
|
+
if (!decodedToken || typeof decodedToken === "string") {
|
|
29
|
+
return {
|
|
30
|
+
validationError: new Error("Cannot parse JWT token"),
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
// The JWT contains a "kid" claim, key id, that tells which key
|
|
34
|
+
// was used to sign the token.
|
|
35
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
36
|
+
const kid = decodedToken["header"]["kid"];
|
|
37
|
+
const jwk = await getSigningKey(jwksUri, kid);
|
|
38
|
+
if (jwk instanceof Error) {
|
|
39
|
+
return { validationError: jwk };
|
|
40
|
+
}
|
|
41
|
+
// Verify the JWT.
|
|
42
|
+
// This either rejects (JWT not valid), or resolves (JWT valid).
|
|
43
|
+
const verificationOptions = {
|
|
44
|
+
audience,
|
|
45
|
+
issuer,
|
|
46
|
+
ignoreExpiration: false,
|
|
47
|
+
};
|
|
48
|
+
return new Promise((resolve) => (0, jsonwebtoken_1.verify)(jwtToken, jwk, verificationOptions, (err) => err ? resolve({ validationError: err }) : resolve(undefined)));
|
|
49
|
+
}
|
|
50
|
+
exports.validate = validate;
|
|
51
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
52
|
+
function decodeIdToken(jwt) {
|
|
53
|
+
const tokenBody = jwt.split(".")[1];
|
|
54
|
+
const decodableTokenBody = tokenBody.replace(/-/g, "+").replace(/_/g, "/");
|
|
55
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
56
|
+
return JSON.parse(Buffer.from(decodableTokenBody, "base64").toString());
|
|
57
|
+
}
|
|
58
|
+
exports.decodeIdToken = decodeIdToken;
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiand0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hhbmRsZXJzL3V0aWwvand0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLCtDQUE2QztBQUM3Qyx3REFBZ0U7QUFnQmhFLDBEQUEwRDtBQUMxRCw2QkFBNkI7QUFDN0IsSUFBSSxPQUE4QixDQUFBO0FBRWxDLFNBQVMsZUFBZSxDQUFDLEdBQWU7SUFDdEMsT0FBTyxjQUFjLElBQUksR0FBRyxDQUFBO0FBQzlCLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxLQUFLLFVBQVUsYUFBYSxDQUMxQixPQUFlLEVBQ2YsR0FBVztJQUVYLElBQUksQ0FBQyxPQUFPLEVBQUU7UUFDWixPQUFPLEdBQUcsSUFBQSxrQkFBVSxFQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUE7S0FDaEU7SUFDRCxNQUFNLEdBQUcsR0FBRyxNQUFNLE9BQU8sQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDNUMsT0FBTyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUE7QUFDaEUsQ0FBQztBQUVNLEtBQUssVUFBVSxRQUFRLENBQzVCLFFBQWdCLEVBQ2hCLE9BQWUsRUFDZixNQUFjLEVBQ2QsUUFBZ0I7SUFFaEIsTUFBTSxZQUFZLEdBQUcsSUFBQSxxQkFBTSxFQUFDLFFBQVEsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO0lBQ3pELElBQUksQ0FBQyxZQUFZLElBQUksT0FBTyxZQUFZLEtBQUssUUFBUSxFQUFFO1FBQ3JELE9BQU87WUFDTCxlQUFlLEVBQUUsSUFBSSxLQUFLLENBQUMsd0JBQXdCLENBQUM7U0FDckQsQ0FBQTtLQUNGO0lBRUQsK0RBQStEO0lBQy9ELDhCQUE4QjtJQUM5QixzRUFBc0U7SUFDdEUsTUFBTSxHQUFHLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssQ0FBVyxDQUFBO0lBQ25ELE1BQU0sR0FBRyxHQUFHLE1BQU0sYUFBYSxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQTtJQUM3QyxJQUFJLEdBQUcsWUFBWSxLQUFLLEVBQUU7UUFDeEIsT0FBTyxFQUFFLGVBQWUsRUFBRSxHQUFHLEVBQUUsQ0FBQTtLQUNoQztJQUVELGtCQUFrQjtJQUNsQixnRUFBZ0U7SUFDaEUsTUFBTSxtQkFBbUIsR0FBRztRQUMxQixRQUFRO1FBQ1IsTUFBTTtRQUNOLGdCQUFnQixFQUFFLEtBQUs7S0FDeEIsQ0FBQTtJQUVELE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUM3QixJQUFBLHFCQUFNLEVBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxtQkFBbUIsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQ2pELEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsZUFBZSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FDN0QsQ0FDRixDQUFBO0FBQ0gsQ0FBQztBQW5DRCw0QkFtQ0M7QUFFRCw4REFBOEQ7QUFDOUQsU0FBZ0IsYUFBYSxDQUFDLEdBQVc7SUFDdkMsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNuQyxNQUFNLGtCQUFrQixHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUE7SUFDMUUsK0RBQStEO0lBQy9ELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLFFBQVEsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUE7QUFDekUsQ0FBQztBQUxELHNDQUtDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGVjb2RlLCB2ZXJpZnkgfSBmcm9tIFwianNvbndlYnRva2VuXCJcbmltcG9ydCBqd2tzQ2xpZW50LCB7IFJzYVNpZ25pbmdLZXksIFNpZ25pbmdLZXkgfSBmcm9tIFwiandrcy1yc2FcIlxuXG5leHBvcnQgaW50ZXJmYWNlIElkVG9rZW5QYXlsb2FkIHtcbiAgc3ViOiBzdHJpbmdcbiAgXCJjb2duaXRvOmdyb3Vwc1wiPzogc3RyaW5nW11cbiAgXCJjb2duaXRvOnVzZXJuYW1lXCI/OiBzdHJpbmdcbiAgZ2l2ZW5fbmFtZT86IHN0cmluZ1xuICBhdWQ6IHN0cmluZ1xuICB0b2tlbl91c2U6IFwiaWRcIlxuICBhdXRoX3RpbWU6IG51bWJlclxuICBuYW1lPzogc3RyaW5nXG4gIGV4cDogbnVtYmVyXG4gIGlhdDogbnVtYmVyXG4gIGVtYWlsPzogc3RyaW5nXG59XG5cbi8vIGp3a3MgY2xpZW50IGlzIGNhY2hlZCBhdCB0aGlzIHNjb3BlIHNvIGl0IGNhbiBiZSByZXVzZWRcbi8vIGFjcm9zcyBMYW1iZGEgaW52b2NhdGlvbnMuXG5sZXQgandrc1JzYTogandrc0NsaWVudC5Kd2tzQ2xpZW50XG5cbmZ1bmN0aW9uIGlzUnNhU2lnbmluZ0tleShrZXk6IFNpZ25pbmdLZXkpOiBrZXkgaXMgUnNhU2lnbmluZ0tleSB7XG4gIHJldHVybiBcInJzYVB1YmxpY0tleVwiIGluIGtleVxufVxuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgcHVibGljIGtleSB0aGF0IGNvcnJlc3BvbmRzIHRvIHRoZSBwcml2YXRlIGtleSB3aXRoXG4gKiB3aGljaCB0aGUgdG9rZW4gd2FzIHNpZ25lZC5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0U2lnbmluZ0tleShcbiAgandrc1VyaTogc3RyaW5nLFxuICBraWQ6IHN0cmluZyxcbik6IFByb21pc2U8c3RyaW5nIHwgRXJyb3I+IHtcbiAgaWYgKCFqd2tzUnNhKSB7XG4gICAgandrc1JzYSA9IGp3a3NDbGllbnQoeyBjYWNoZTogdHJ1ZSwgcmF0ZUxpbWl0OiB0cnVlLCBqd2tzVXJpIH0pXG4gIH1cbiAgY29uc3QgandrID0gYXdhaXQgandrc1JzYS5nZXRTaWduaW5nS2V5KGtpZClcbiAgcmV0dXJuIGlzUnNhU2lnbmluZ0tleShqd2spID8gandrLnJzYVB1YmxpY0tleSA6IGp3ay5wdWJsaWNLZXlcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHZhbGlkYXRlKFxuICBqd3RUb2tlbjogc3RyaW5nLFxuICBqd2tzVXJpOiBzdHJpbmcsXG4gIGlzc3Vlcjogc3RyaW5nLFxuICBhdWRpZW5jZTogc3RyaW5nLFxuKTogUHJvbWlzZTx7IHZhbGlkYXRpb25FcnJvcjogRXJyb3IgfSB8IHVuZGVmaW5lZD4ge1xuICBjb25zdCBkZWNvZGVkVG9rZW4gPSBkZWNvZGUoand0VG9rZW4sIHsgY29tcGxldGU6IHRydWUgfSlcbiAgaWYgKCFkZWNvZGVkVG9rZW4gfHwgdHlwZW9mIGRlY29kZWRUb2tlbiA9PT0gXCJzdHJpbmdcIikge1xuICAgIHJldHVybiB7XG4gICAgICB2YWxpZGF0aW9uRXJyb3I6IG5ldyBFcnJvcihcIkNhbm5vdCBwYXJzZSBKV1QgdG9rZW5cIiksXG4gICAgfVxuICB9XG5cbiAgLy8gVGhlIEpXVCBjb250YWlucyBhIFwia2lkXCIgY2xhaW0sIGtleSBpZCwgdGhhdCB0ZWxscyB3aGljaCBrZXlcbiAgLy8gd2FzIHVzZWQgdG8gc2lnbiB0aGUgdG9rZW4uXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLW1lbWJlci1hY2Nlc3NcbiAgY29uc3Qga2lkID0gZGVjb2RlZFRva2VuW1wiaGVhZGVyXCJdW1wia2lkXCJdIGFzIHN0cmluZ1xuICBjb25zdCBqd2sgPSBhd2FpdCBnZXRTaWduaW5nS2V5KGp3a3NVcmksIGtpZClcbiAgaWYgKGp3ayBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgcmV0dXJuIHsgdmFsaWRhdGlvbkVycm9yOiBqd2sgfVxuICB9XG5cbiAgLy8gVmVyaWZ5IHRoZSBKV1QuXG4gIC8vIFRoaXMgZWl0aGVyIHJlamVjdHMgKEpXVCBub3QgdmFsaWQpLCBvciByZXNvbHZlcyAoSldUIHZhbGlkKS5cbiAgY29uc3QgdmVyaWZpY2F0aW9uT3B0aW9ucyA9IHtcbiAgICBhdWRpZW5jZSxcbiAgICBpc3N1ZXIsXG4gICAgaWdub3JlRXhwaXJhdGlvbjogZmFsc2UsXG4gIH1cblxuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+XG4gICAgdmVyaWZ5KGp3dFRva2VuLCBqd2ssIHZlcmlmaWNhdGlvbk9wdGlvbnMsIChlcnIpID0+XG4gICAgICBlcnIgPyByZXNvbHZlKHsgdmFsaWRhdGlvbkVycm9yOiBlcnIgfSkgOiByZXNvbHZlKHVuZGVmaW5lZCksXG4gICAgKSxcbiAgKVxufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuZXhwb3J0IGZ1bmN0aW9uIGRlY29kZUlkVG9rZW4oand0OiBzdHJpbmcpOiBJZFRva2VuUGF5bG9hZCB7XG4gIGNvbnN0IHRva2VuQm9keSA9IGp3dC5zcGxpdChcIi5cIilbMV1cbiAgY29uc3QgZGVjb2RhYmxlVG9rZW5Cb2R5ID0gdG9rZW5Cb2R5LnJlcGxhY2UoLy0vZywgXCIrXCIpLnJlcGxhY2UoL18vZywgXCIvXCIpXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLXJldHVyblxuICByZXR1cm4gSlNPTi5wYXJzZShCdWZmZXIuZnJvbShkZWNvZGFibGVUb2tlbkJvZHksIFwiYmFzZTY0XCIpLnRvU3RyaW5nKCkpXG59XG4iXX0=
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export declare enum LogLevel {
|
|
2
|
+
"none" = 0,
|
|
3
|
+
"error" = 10,
|
|
4
|
+
"warn" = 20,
|
|
5
|
+
"info" = 30,
|
|
6
|
+
"debug" = 40
|
|
7
|
+
}
|
|
8
|
+
export declare class Logger {
|
|
9
|
+
private logLevel;
|
|
10
|
+
constructor(logLevel: LogLevel);
|
|
11
|
+
private jsonify;
|
|
12
|
+
info(...args: any): void;
|
|
13
|
+
warn(...args: any): void;
|
|
14
|
+
error(...args: any): void;
|
|
15
|
+
debug(...args: any): void;
|
|
16
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/* eslint-disable @typescript-eslint/no-unsafe-argument */
|
|
3
|
+
/* eslint-disable @typescript-eslint/no-unsafe-return */
|
|
4
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
5
|
+
/* eslint-disable @typescript-eslint/explicit-module-boundary-types */
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.Logger = exports.LogLevel = void 0;
|
|
8
|
+
var LogLevel;
|
|
9
|
+
(function (LogLevel) {
|
|
10
|
+
LogLevel[LogLevel["none"] = 0] = "none";
|
|
11
|
+
LogLevel[LogLevel["error"] = 10] = "error";
|
|
12
|
+
LogLevel[LogLevel["warn"] = 20] = "warn";
|
|
13
|
+
LogLevel[LogLevel["info"] = 30] = "info";
|
|
14
|
+
LogLevel[LogLevel["debug"] = 40] = "debug";
|
|
15
|
+
})(LogLevel = exports.LogLevel || (exports.LogLevel = {}));
|
|
16
|
+
class Logger {
|
|
17
|
+
constructor(logLevel) {
|
|
18
|
+
this.logLevel = logLevel;
|
|
19
|
+
}
|
|
20
|
+
jsonify(args) {
|
|
21
|
+
return args.map((arg) => {
|
|
22
|
+
if (typeof arg === "object") {
|
|
23
|
+
try {
|
|
24
|
+
return JSON.stringify(arg);
|
|
25
|
+
}
|
|
26
|
+
catch (_a) {
|
|
27
|
+
return arg;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
return arg;
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
info(...args) {
|
|
34
|
+
if (this.logLevel >= LogLevel.info) {
|
|
35
|
+
console.log(...this.jsonify(args));
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
warn(...args) {
|
|
39
|
+
if (this.logLevel >= LogLevel.warn) {
|
|
40
|
+
console.warn(...this.jsonify(args));
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
error(...args) {
|
|
44
|
+
if (this.logLevel >= LogLevel.error) {
|
|
45
|
+
console.error(...this.jsonify(args));
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
debug(...args) {
|
|
49
|
+
if (this.logLevel >= LogLevel.debug) {
|
|
50
|
+
console.trace(...this.jsonify(args));
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
exports.Logger = Logger;
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hhbmRsZXJzL3V0aWwvbG9nZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSwwREFBMEQ7QUFDMUQsd0RBQXdEO0FBQ3hELHVEQUF1RDtBQUN2RCxzRUFBc0U7OztBQUV0RSxJQUFZLFFBTVg7QUFORCxXQUFZLFFBQVE7SUFDbEIsdUNBQVUsQ0FBQTtJQUNWLDBDQUFZLENBQUE7SUFDWix3Q0FBVyxDQUFBO0lBQ1gsd0NBQVcsQ0FBQTtJQUNYLDBDQUFZLENBQUE7QUFDZCxDQUFDLEVBTlcsUUFBUSxHQUFSLGdCQUFRLEtBQVIsZ0JBQVEsUUFNbkI7QUFFRCxNQUFhLE1BQU07SUFDakIsWUFBb0IsUUFBa0I7UUFBbEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtJQUFHLENBQUM7SUFFbEMsT0FBTyxDQUFDLElBQVc7UUFDekIsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBUSxFQUFPLEVBQUU7WUFDaEMsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLEVBQUU7Z0JBQzNCLElBQUk7b0JBQ0YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFBO2lCQUMzQjtnQkFBQyxXQUFNO29CQUNOLE9BQU8sR0FBRyxDQUFBO2lCQUNYO2FBQ0Y7WUFDRCxPQUFPLEdBQUcsQ0FBQTtRQUNaLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUNNLElBQUksQ0FBQyxHQUFHLElBQVM7UUFDdEIsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLFFBQVEsQ0FBQyxJQUFJLEVBQUU7WUFDbEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtTQUNuQztJQUNILENBQUM7SUFDTSxJQUFJLENBQUMsR0FBRyxJQUFTO1FBQ3RCLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxRQUFRLENBQUMsSUFBSSxFQUFFO1lBQ2xDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7U0FDcEM7SUFDSCxDQUFDO0lBQ00sS0FBSyxDQUFDLEdBQUcsSUFBUztRQUN2QixJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksUUFBUSxDQUFDLEtBQUssRUFBRTtZQUNuQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO1NBQ3JDO0lBQ0gsQ0FBQztJQUNNLEtBQUssQ0FBQyxHQUFHLElBQVM7UUFDdkIsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLFFBQVEsQ0FBQyxLQUFLLEVBQUU7WUFDbkMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtTQUNyQztJQUNILENBQUM7Q0FDRjtBQW5DRCx3QkFtQ0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWFyZ3VtZW50ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLXJldHVybiAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L2V4cGxpY2l0LW1vZHVsZS1ib3VuZGFyeS10eXBlcyAqL1xuXG5leHBvcnQgZW51bSBMb2dMZXZlbCB7XG4gIFwibm9uZVwiID0gMCxcbiAgXCJlcnJvclwiID0gMTAsXG4gIFwid2FyblwiID0gMjAsXG4gIFwiaW5mb1wiID0gMzAsXG4gIFwiZGVidWdcIiA9IDQwLFxufVxuXG5leHBvcnQgY2xhc3MgTG9nZ2VyIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBsb2dMZXZlbDogTG9nTGV2ZWwpIHt9XG5cbiAgcHJpdmF0ZSBqc29uaWZ5KGFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuIGFyZ3MubWFwKChhcmc6IGFueSk6IGFueSA9PiB7XG4gICAgICBpZiAodHlwZW9mIGFyZyA9PT0gXCJvYmplY3RcIikge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShhcmcpXG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgIHJldHVybiBhcmdcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGFyZ1xuICAgIH0pXG4gIH1cbiAgcHVibGljIGluZm8oLi4uYXJnczogYW55KTogdm9pZCB7XG4gICAgaWYgKHRoaXMubG9nTGV2ZWwgPj0gTG9nTGV2ZWwuaW5mbykge1xuICAgICAgY29uc29sZS5sb2coLi4udGhpcy5qc29uaWZ5KGFyZ3MpKVxuICAgIH1cbiAgfVxuICBwdWJsaWMgd2FybiguLi5hcmdzOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5sb2dMZXZlbCA+PSBMb2dMZXZlbC53YXJuKSB7XG4gICAgICBjb25zb2xlLndhcm4oLi4udGhpcy5qc29uaWZ5KGFyZ3MpKVxuICAgIH1cbiAgfVxuICBwdWJsaWMgZXJyb3IoLi4uYXJnczogYW55KTogdm9pZCB7XG4gICAgaWYgKHRoaXMubG9nTGV2ZWwgPj0gTG9nTGV2ZWwuZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoLi4udGhpcy5qc29uaWZ5KGFyZ3MpKVxuICAgIH1cbiAgfVxuICBwdWJsaWMgZGVidWcoLi4uYXJnczogYW55KTogdm9pZCB7XG4gICAgaWYgKHRoaXMubG9nTGV2ZWwgPj0gTG9nTGV2ZWwuZGVidWcpIHtcbiAgICAgIGNvbnNvbGUudHJhY2UoLi4udGhpcy5qc29uaWZ5KGFyZ3MpKVxuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Config } from "./config";
|
|
2
|
+
export declare function checkNonceAge(nonce: string, maxAge: number): {
|
|
3
|
+
clientError: string;
|
|
4
|
+
} | undefined;
|
|
5
|
+
export declare function validateNonce(nonce: string, providedHmac: string, config: Config): {
|
|
6
|
+
clientError: string;
|
|
7
|
+
} | undefined;
|
|
8
|
+
export declare function generateNonce(): string;
|
|
9
|
+
export declare function createNonceHmac(nonce: string, config: Config): string;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createNonceHmac = exports.generateNonce = exports.validateNonce = exports.checkNonceAge = void 0;
|
|
4
|
+
const crypto_1 = require("crypto");
|
|
5
|
+
function checkNonceAge(nonce, maxAge) {
|
|
6
|
+
// Nonce should not be too old.
|
|
7
|
+
const timestamp = parseInt(nonce.slice(0, nonce.indexOf("T")));
|
|
8
|
+
if (isNaN(timestamp)) {
|
|
9
|
+
return {
|
|
10
|
+
clientError: "Invalid nonce",
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
if (timestampInSeconds() - timestamp > maxAge) {
|
|
14
|
+
return {
|
|
15
|
+
clientError: `Nonce is too old (nonce is from ${new Date(timestamp * 1000).toISOString()})`,
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
exports.checkNonceAge = checkNonceAge;
|
|
20
|
+
function validateNonce(nonce, providedHmac, config) {
|
|
21
|
+
const res1 = checkNonceAge(nonce, config.nonceMaxAge);
|
|
22
|
+
if (res1) {
|
|
23
|
+
return res1;
|
|
24
|
+
}
|
|
25
|
+
const calculatedHmac = createNonceHmac(nonce, config);
|
|
26
|
+
if (calculatedHmac !== providedHmac) {
|
|
27
|
+
return {
|
|
28
|
+
clientError: `Nonce signature mismatch! Expected ${calculatedHmac} but got ${providedHmac}`,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
exports.validateNonce = validateNonce;
|
|
33
|
+
function generateNonce() {
|
|
34
|
+
const randomString = (0, crypto_1.randomBytes)(16).toString("hex");
|
|
35
|
+
return `${timestampInSeconds()}T${randomString}`;
|
|
36
|
+
}
|
|
37
|
+
exports.generateNonce = generateNonce;
|
|
38
|
+
function createNonceHmac(nonce, config) {
|
|
39
|
+
return (0, crypto_1.createHmac)("sha256", config.nonceSigningSecret)
|
|
40
|
+
.update(nonce)
|
|
41
|
+
.digest("hex");
|
|
42
|
+
}
|
|
43
|
+
exports.createNonceHmac = createNonceHmac;
|
|
44
|
+
function timestampInSeconds() {
|
|
45
|
+
return (Date.now() / 1000) | 0;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9uY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaGFuZGxlcnMvdXRpbC9ub25jZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBZ0Q7QUFHaEQsU0FBZ0IsYUFBYSxDQUMzQixLQUFhLEVBQ2IsTUFBYztJQUVkLCtCQUErQjtJQUMvQixNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDOUQsSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDLEVBQUU7UUFDcEIsT0FBTztZQUNMLFdBQVcsRUFBRSxlQUFlO1NBQzdCLENBQUE7S0FDRjtJQUVELElBQUksa0JBQWtCLEVBQUUsR0FBRyxTQUFTLEdBQUcsTUFBTSxFQUFFO1FBQzdDLE9BQU87WUFDTCxXQUFXLEVBQUUsbUNBQW1DLElBQUksSUFBSSxDQUN0RCxTQUFTLEdBQUcsSUFBSSxDQUNqQixDQUFDLFdBQVcsRUFBRSxHQUFHO1NBQ25CLENBQUE7S0FDRjtBQUNILENBQUM7QUFuQkQsc0NBbUJDO0FBRUQsU0FBZ0IsYUFBYSxDQUMzQixLQUFhLEVBQ2IsWUFBb0IsRUFDcEIsTUFBYztJQUVkLE1BQU0sSUFBSSxHQUFHLGFBQWEsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFBO0lBQ3JELElBQUksSUFBSSxFQUFFO1FBQ1IsT0FBTyxJQUFJLENBQUE7S0FDWjtJQUVELE1BQU0sY0FBYyxHQUFHLGVBQWUsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUE7SUFDckQsSUFBSSxjQUFjLEtBQUssWUFBWSxFQUFFO1FBQ25DLE9BQU87WUFDTCxXQUFXLEVBQUUsc0NBQXNDLGNBQWMsWUFBWSxZQUFZLEVBQUU7U0FDNUYsQ0FBQTtLQUNGO0FBQ0gsQ0FBQztBQWhCRCxzQ0FnQkM7QUFFRCxTQUFnQixhQUFhO0lBQzNCLE1BQU0sWUFBWSxHQUFHLElBQUEsb0JBQVcsRUFBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDcEQsT0FBTyxHQUFHLGtCQUFrQixFQUFFLElBQUksWUFBWSxFQUFFLENBQUE7QUFDbEQsQ0FBQztBQUhELHNDQUdDO0FBRUQsU0FBZ0IsZUFBZSxDQUFDLEtBQWEsRUFBRSxNQUFjO0lBQzNELE9BQU8sSUFBQSxtQkFBVSxFQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsa0JBQWtCLENBQUM7U0FDbkQsTUFBTSxDQUFDLEtBQUssQ0FBQztTQUNiLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtBQUNsQixDQUFDO0FBSkQsMENBSUM7QUFFRCxTQUFTLGtCQUFrQjtJQUN6QixPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtBQUNoQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlSG1hYywgcmFuZG9tQnl0ZXMgfSBmcm9tIFwiY3J5cHRvXCJcbmltcG9ydCB7IENvbmZpZyB9IGZyb20gXCIuL2NvbmZpZ1wiXG5cbmV4cG9ydCBmdW5jdGlvbiBjaGVja05vbmNlQWdlKFxuICBub25jZTogc3RyaW5nLFxuICBtYXhBZ2U6IG51bWJlcixcbik6IHsgY2xpZW50RXJyb3I6IHN0cmluZyB9IHwgdW5kZWZpbmVkIHtcbiAgLy8gTm9uY2Ugc2hvdWxkIG5vdCBiZSB0b28gb2xkLlxuICBjb25zdCB0aW1lc3RhbXAgPSBwYXJzZUludChub25jZS5zbGljZSgwLCBub25jZS5pbmRleE9mKFwiVFwiKSkpXG4gIGlmIChpc05hTih0aW1lc3RhbXApKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNsaWVudEVycm9yOiBcIkludmFsaWQgbm9uY2VcIixcbiAgICB9XG4gIH1cblxuICBpZiAodGltZXN0YW1wSW5TZWNvbmRzKCkgLSB0aW1lc3RhbXAgPiBtYXhBZ2UpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY2xpZW50RXJyb3I6IGBOb25jZSBpcyB0b28gb2xkIChub25jZSBpcyBmcm9tICR7bmV3IERhdGUoXG4gICAgICAgIHRpbWVzdGFtcCAqIDEwMDAsXG4gICAgICApLnRvSVNPU3RyaW5nKCl9KWAsXG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZU5vbmNlKFxuICBub25jZTogc3RyaW5nLFxuICBwcm92aWRlZEhtYWM6IHN0cmluZyxcbiAgY29uZmlnOiBDb25maWcsXG4pOiB7IGNsaWVudEVycm9yOiBzdHJpbmcgfSB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHJlczEgPSBjaGVja05vbmNlQWdlKG5vbmNlLCBjb25maWcubm9uY2VNYXhBZ2UpXG4gIGlmIChyZXMxKSB7XG4gICAgcmV0dXJuIHJlczFcbiAgfVxuXG4gIGNvbnN0IGNhbGN1bGF0ZWRIbWFjID0gY3JlYXRlTm9uY2VIbWFjKG5vbmNlLCBjb25maWcpXG4gIGlmIChjYWxjdWxhdGVkSG1hYyAhPT0gcHJvdmlkZWRIbWFjKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNsaWVudEVycm9yOiBgTm9uY2Ugc2lnbmF0dXJlIG1pc21hdGNoISBFeHBlY3RlZCAke2NhbGN1bGF0ZWRIbWFjfSBidXQgZ290ICR7cHJvdmlkZWRIbWFjfWAsXG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZU5vbmNlKCk6IHN0cmluZyB7XG4gIGNvbnN0IHJhbmRvbVN0cmluZyA9IHJhbmRvbUJ5dGVzKDE2KS50b1N0cmluZyhcImhleFwiKVxuICByZXR1cm4gYCR7dGltZXN0YW1wSW5TZWNvbmRzKCl9VCR7cmFuZG9tU3RyaW5nfWBcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU5vbmNlSG1hYyhub25jZTogc3RyaW5nLCBjb25maWc6IENvbmZpZyk6IHN0cmluZyB7XG4gIHJldHVybiBjcmVhdGVIbWFjKFwic2hhMjU2XCIsIGNvbmZpZy5ub25jZVNpZ25pbmdTZWNyZXQpXG4gICAgLnVwZGF0ZShub25jZSlcbiAgICAuZGlnZXN0KFwiaGV4XCIpXG59XG5cbmZ1bmN0aW9uIHRpbWVzdGFtcEluU2Vjb25kcygpIHtcbiAgcmV0dXJuIChEYXRlLm5vdygpIC8gMTAwMCkgfCAwXG59XG4iXX0=
|
package/lib/index.d.ts
ADDED
package/lib/index.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./cloudfront-auth"), exports);
|
|
18
|
+
__exportStar(require("./lambdas"), exports);
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9EQUFpQztBQUNqQyw0Q0FBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9jbG91ZGZyb250LWF1dGhcIlxuZXhwb3J0ICogZnJvbSBcIi4vbGFtYmRhc1wiXG4iXX0=
|
package/lib/lambdas.d.ts
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import * as lambda from "aws-cdk-lib/aws-lambda";
|
|
2
|
+
import { ParameterResource } from "@henrist/cdk-cross-region-params";
|
|
3
|
+
import { Construct } from "constructs";
|
|
4
|
+
interface AuthLambdasProps {
|
|
5
|
+
/**
|
|
6
|
+
* List of regions this can be used in. This should contain the region
|
|
7
|
+
* where the CloudFront distribution is deployed (the CloudFormation stack).
|
|
8
|
+
*/
|
|
9
|
+
regions: string[];
|
|
10
|
+
/**
|
|
11
|
+
* A nonce value that can be used to force new lambda functions
|
|
12
|
+
* to allow new versions to be created.
|
|
13
|
+
*/
|
|
14
|
+
nonce?: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Lambdas used for CloudFront. Must be deployed in us-east-1.
|
|
18
|
+
*
|
|
19
|
+
* This will provision SSM Parameters the region where the CloudFront
|
|
20
|
+
* distribution is deployed from, so that it can be used cross-region.
|
|
21
|
+
*/
|
|
22
|
+
export declare class AuthLambdas extends Construct {
|
|
23
|
+
readonly checkAuthFn: ParameterResource<lambda.IVersion>;
|
|
24
|
+
readonly httpHeadersFn: ParameterResource<lambda.IVersion>;
|
|
25
|
+
readonly parseAuthFn: ParameterResource<lambda.IVersion>;
|
|
26
|
+
readonly refreshAuthFn: ParameterResource<lambda.IVersion>;
|
|
27
|
+
readonly signOutFn: ParameterResource<lambda.IVersion>;
|
|
28
|
+
private readonly regions;
|
|
29
|
+
private readonly nonce;
|
|
30
|
+
constructor(scope: Construct, id: string, props: AuthLambdasProps);
|
|
31
|
+
private addFunction;
|
|
32
|
+
}
|
|
33
|
+
export {};
|
package/lib/lambdas.js
ADDED
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.AuthLambdas = void 0;
|
|
27
|
+
const iam = __importStar(require("aws-cdk-lib/aws-iam"));
|
|
28
|
+
const lambda = __importStar(require("aws-cdk-lib/aws-lambda"));
|
|
29
|
+
const cdk_cross_region_params_1 = require("@henrist/cdk-cross-region-params");
|
|
30
|
+
const path = __importStar(require("path"));
|
|
31
|
+
const constructs_1 = require("constructs");
|
|
32
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
33
|
+
const isSnapshot = process.env.IS_SNAPSHOT === "true";
|
|
34
|
+
/**
|
|
35
|
+
* Lambdas used for CloudFront. Must be deployed in us-east-1.
|
|
36
|
+
*
|
|
37
|
+
* This will provision SSM Parameters the region where the CloudFront
|
|
38
|
+
* distribution is deployed from, so that it can be used cross-region.
|
|
39
|
+
*/
|
|
40
|
+
class AuthLambdas extends constructs_1.Construct {
|
|
41
|
+
constructor(scope, id, props) {
|
|
42
|
+
super(scope, id);
|
|
43
|
+
const region = aws_cdk_lib_1.Stack.of(this).region;
|
|
44
|
+
this.regions = props.regions;
|
|
45
|
+
this.nonce = props.nonce;
|
|
46
|
+
if (region !== "us-east-1") {
|
|
47
|
+
throw new Error("Region must be us-east-1 due to Lambda@edge");
|
|
48
|
+
}
|
|
49
|
+
const role = new iam.Role(this, "ServiceRole", {
|
|
50
|
+
assumedBy: new iam.CompositePrincipal(new iam.ServicePrincipal("lambda.amazonaws.com"), new iam.ServicePrincipal("edgelambda.amazonaws.com")),
|
|
51
|
+
managedPolicies: [
|
|
52
|
+
iam.ManagedPolicy.fromAwsManagedPolicyName("service-role/AWSLambdaBasicExecutionRole"),
|
|
53
|
+
],
|
|
54
|
+
});
|
|
55
|
+
this.checkAuthFn = this.addFunction("CheckAuthFunction", "check-auth", role);
|
|
56
|
+
this.httpHeadersFn = this.addFunction("HttpHeadersFunction", "http-headers", role);
|
|
57
|
+
this.parseAuthFn = this.addFunction("ParseAuthFunction", "parse-auth", role);
|
|
58
|
+
this.refreshAuthFn = this.addFunction("RefreshAuthFunction", "refresh-auth", role);
|
|
59
|
+
this.signOutFn = this.addFunction("SignOutFunction", "sign-out", role);
|
|
60
|
+
}
|
|
61
|
+
addFunction(id, assetName, role) {
|
|
62
|
+
const region = aws_cdk_lib_1.Stack.of(this).region;
|
|
63
|
+
const stackName = aws_cdk_lib_1.Stack.of(this).stackName;
|
|
64
|
+
const fn = new lambda.Function(this, id, {
|
|
65
|
+
code: process.env.NODE_ENV === "test"
|
|
66
|
+
? lambda.Code.fromInline("snapshot-value")
|
|
67
|
+
: lambda.Code.fromAsset(path.join(__dirname, `../dist/${assetName}`)),
|
|
68
|
+
handler: "index.handler",
|
|
69
|
+
runtime: lambda.Runtime.NODEJS_16_X,
|
|
70
|
+
timeout: aws_cdk_lib_1.Duration.seconds(5),
|
|
71
|
+
role,
|
|
72
|
+
description: this.nonce == null ? undefined : `Nonce value: ${this.nonce}`,
|
|
73
|
+
});
|
|
74
|
+
if (this.node.addr === undefined) {
|
|
75
|
+
throw new Error("node.addr not found - ensure aws-cdk is up-to-update");
|
|
76
|
+
}
|
|
77
|
+
return new cdk_cross_region_params_1.ParameterResource(this, `${id}VersionParam`, {
|
|
78
|
+
nonce: isSnapshot ? "snapshot" : undefined,
|
|
79
|
+
parameterName: `/cf/region/${region}/stack/${stackName}/${this.node.addr}-${id}-function-arn`,
|
|
80
|
+
referenceToResource: (scope, id, reference) => lambda.Version.fromVersionArn(scope, id, reference),
|
|
81
|
+
regions: this.regions,
|
|
82
|
+
resource: fn.currentVersion,
|
|
83
|
+
resourceToReference: (resource) => resource.functionArn,
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
exports.AuthLambdas = AuthLambdas;
|
|
88
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFtYmRhcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9sYW1iZGFzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEseURBQTBDO0FBQzFDLCtEQUFnRDtBQUNoRCw4RUFBb0U7QUFDcEUsMkNBQTRCO0FBQzVCLDJDQUFzQztBQUN0Qyw2Q0FBNkM7QUFFN0MsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLEtBQUssTUFBTSxDQUFBO0FBZXJEOzs7OztHQUtHO0FBQ0gsTUFBYSxXQUFZLFNBQVEsc0JBQVM7SUFVeEMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUF1QjtRQUMvRCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFBO1FBRWhCLE1BQU0sTUFBTSxHQUFHLG1CQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQTtRQUNwQyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUE7UUFFNUIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFBO1FBRXhCLElBQUksTUFBTSxLQUFLLFdBQVcsRUFBRTtZQUMxQixNQUFNLElBQUksS0FBSyxDQUFDLDZDQUE2QyxDQUFDLENBQUE7U0FDL0Q7UUFFRCxNQUFNLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRTtZQUM3QyxTQUFTLEVBQUUsSUFBSSxHQUFHLENBQUMsa0JBQWtCLENBQ25DLElBQUksR0FBRyxDQUFDLGdCQUFnQixDQUFDLHNCQUFzQixDQUFDLEVBQ2hELElBQUksR0FBRyxDQUFDLGdCQUFnQixDQUFDLDBCQUEwQixDQUFDLENBQ3JEO1lBQ0QsZUFBZSxFQUFFO2dCQUNmLEdBQUcsQ0FBQyxhQUFhLENBQUMsd0JBQXdCLENBQ3hDLDBDQUEwQyxDQUMzQzthQUNGO1NBQ0YsQ0FBQyxDQUFBO1FBRUYsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLG1CQUFtQixFQUFFLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQTtRQUM1RSxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQ25DLHFCQUFxQixFQUNyQixjQUFjLEVBQ2QsSUFBSSxDQUNMLENBQUE7UUFDRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsbUJBQW1CLEVBQUUsWUFBWSxFQUFFLElBQUksQ0FBQyxDQUFBO1FBQzVFLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FDbkMscUJBQXFCLEVBQ3JCLGNBQWMsRUFDZCxJQUFJLENBQ0wsQ0FBQTtRQUNELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDeEUsQ0FBQztJQUVPLFdBQVcsQ0FBQyxFQUFVLEVBQUUsU0FBaUIsRUFBRSxJQUFlO1FBQ2hFLE1BQU0sTUFBTSxHQUFHLG1CQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQTtRQUNwQyxNQUFNLFNBQVMsR0FBRyxtQkFBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUE7UUFFMUMsTUFBTSxFQUFFLEdBQUcsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUU7WUFDdkMsSUFBSSxFQUNGLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxLQUFLLE1BQU07Z0JBQzdCLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQztnQkFDMUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFdBQVcsU0FBUyxFQUFFLENBQUMsQ0FBQztZQUN6RSxPQUFPLEVBQUUsZUFBZTtZQUN4QixPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXO1lBQ25DLE9BQU8sRUFBRSxzQkFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDNUIsSUFBSTtZQUNKLFdBQVcsRUFDVCxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsSUFBSSxDQUFDLEtBQUssRUFBRTtTQUNoRSxDQUFDLENBQUE7UUFFRixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLFNBQVMsRUFBRTtZQUNoQyxNQUFNLElBQUksS0FBSyxDQUFDLHNEQUFzRCxDQUFDLENBQUE7U0FDeEU7UUFFRCxPQUFPLElBQUksMkNBQWlCLENBQWtCLElBQUksRUFBRSxHQUFHLEVBQUUsY0FBYyxFQUFFO1lBQ3ZFLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUztZQUMxQyxhQUFhLEVBQUUsY0FBYyxNQUFNLFVBQVUsU0FBUyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUUsZUFBZTtZQUM3RixtQkFBbUIsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsQ0FDNUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxTQUFTLENBQUM7WUFDckQsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1lBQ3JCLFFBQVEsRUFBRSxFQUFFLENBQUMsY0FBYztZQUMzQixtQkFBbUIsRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLFdBQVc7U0FDeEQsQ0FBQyxDQUFBO0lBQ0osQ0FBQztDQUNGO0FBaEZELGtDQWdGQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGlhbSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWlhbVwiXG5pbXBvcnQgKiBhcyBsYW1iZGEgZnJvbSBcImF3cy1jZGstbGliL2F3cy1sYW1iZGFcIlxuaW1wb3J0IHsgUGFyYW1ldGVyUmVzb3VyY2UgfSBmcm9tIFwiQGhlbnJpc3QvY2RrLWNyb3NzLXJlZ2lvbi1wYXJhbXNcIlxuaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwicGF0aFwiXG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiXG5pbXBvcnQgeyBEdXJhdGlvbiwgU3RhY2sgfSBmcm9tIFwiYXdzLWNkay1saWJcIlxuXG5jb25zdCBpc1NuYXBzaG90ID0gcHJvY2Vzcy5lbnYuSVNfU05BUFNIT1QgPT09IFwidHJ1ZVwiXG5cbmludGVyZmFjZSBBdXRoTGFtYmRhc1Byb3BzIHtcbiAgLyoqXG4gICAqIExpc3Qgb2YgcmVnaW9ucyB0aGlzIGNhbiBiZSB1c2VkIGluLiBUaGlzIHNob3VsZCBjb250YWluIHRoZSByZWdpb25cbiAgICogd2hlcmUgdGhlIENsb3VkRnJvbnQgZGlzdHJpYnV0aW9uIGlzIGRlcGxveWVkICh0aGUgQ2xvdWRGb3JtYXRpb24gc3RhY2spLlxuICAgKi9cbiAgcmVnaW9uczogc3RyaW5nW11cbiAgLyoqXG4gICAqIEEgbm9uY2UgdmFsdWUgdGhhdCBjYW4gYmUgdXNlZCB0byBmb3JjZSBuZXcgbGFtYmRhIGZ1bmN0aW9uc1xuICAgKiB0byBhbGxvdyBuZXcgdmVyc2lvbnMgdG8gYmUgY3JlYXRlZC5cbiAgICovXG4gIG5vbmNlPzogc3RyaW5nXG59XG5cbi8qKlxuICogTGFtYmRhcyB1c2VkIGZvciBDbG91ZEZyb250LiBNdXN0IGJlIGRlcGxveWVkIGluIHVzLWVhc3QtMS5cbiAqXG4gKiBUaGlzIHdpbGwgcHJvdmlzaW9uIFNTTSBQYXJhbWV0ZXJzIHRoZSByZWdpb24gd2hlcmUgdGhlIENsb3VkRnJvbnRcbiAqIGRpc3RyaWJ1dGlvbiBpcyBkZXBsb3llZCBmcm9tLCBzbyB0aGF0IGl0IGNhbiBiZSB1c2VkIGNyb3NzLXJlZ2lvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIEF1dGhMYW1iZGFzIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcHVibGljIHJlYWRvbmx5IGNoZWNrQXV0aEZuOiBQYXJhbWV0ZXJSZXNvdXJjZTxsYW1iZGEuSVZlcnNpb24+XG4gIHB1YmxpYyByZWFkb25seSBodHRwSGVhZGVyc0ZuOiBQYXJhbWV0ZXJSZXNvdXJjZTxsYW1iZGEuSVZlcnNpb24+XG4gIHB1YmxpYyByZWFkb25seSBwYXJzZUF1dGhGbjogUGFyYW1ldGVyUmVzb3VyY2U8bGFtYmRhLklWZXJzaW9uPlxuICBwdWJsaWMgcmVhZG9ubHkgcmVmcmVzaEF1dGhGbjogUGFyYW1ldGVyUmVzb3VyY2U8bGFtYmRhLklWZXJzaW9uPlxuICBwdWJsaWMgcmVhZG9ubHkgc2lnbk91dEZuOiBQYXJhbWV0ZXJSZXNvdXJjZTxsYW1iZGEuSVZlcnNpb24+XG5cbiAgcHJpdmF0ZSByZWFkb25seSByZWdpb25zOiBzdHJpbmdbXVxuICBwcml2YXRlIHJlYWRvbmx5IG5vbmNlOiBzdHJpbmcgfCB1bmRlZmluZWRcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogQXV0aExhbWJkYXNQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZClcblxuICAgIGNvbnN0IHJlZ2lvbiA9IFN0YWNrLm9mKHRoaXMpLnJlZ2lvblxuICAgIHRoaXMucmVnaW9ucyA9IHByb3BzLnJlZ2lvbnNcblxuICAgIHRoaXMubm9uY2UgPSBwcm9wcy5ub25jZVxuXG4gICAgaWYgKHJlZ2lvbiAhPT0gXCJ1cy1lYXN0LTFcIikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUmVnaW9uIG11c3QgYmUgdXMtZWFzdC0xIGR1ZSB0byBMYW1iZGFAZWRnZVwiKVxuICAgIH1cblxuICAgIGNvbnN0IHJvbGUgPSBuZXcgaWFtLlJvbGUodGhpcywgXCJTZXJ2aWNlUm9sZVwiLCB7XG4gICAgICBhc3N1bWVkQnk6IG5ldyBpYW0uQ29tcG9zaXRlUHJpbmNpcGFsKFxuICAgICAgICBuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoXCJsYW1iZGEuYW1hem9uYXdzLmNvbVwiKSxcbiAgICAgICAgbmV3IGlhbS5TZXJ2aWNlUHJpbmNpcGFsKFwiZWRnZWxhbWJkYS5hbWF6b25hd3MuY29tXCIpLFxuICAgICAgKSxcbiAgICAgIG1hbmFnZWRQb2xpY2llczogW1xuICAgICAgICBpYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoXG4gICAgICAgICAgXCJzZXJ2aWNlLXJvbGUvQVdTTGFtYmRhQmFzaWNFeGVjdXRpb25Sb2xlXCIsXG4gICAgICAgICksXG4gICAgICBdLFxuICAgIH0pXG5cbiAgICB0aGlzLmNoZWNrQXV0aEZuID0gdGhpcy5hZGRGdW5jdGlvbihcIkNoZWNrQXV0aEZ1bmN0aW9uXCIsIFwiY2hlY2stYXV0aFwiLCByb2xlKVxuICAgIHRoaXMuaHR0cEhlYWRlcnNGbiA9IHRoaXMuYWRkRnVuY3Rpb24oXG4gICAgICBcIkh0dHBIZWFkZXJzRnVuY3Rpb25cIixcbiAgICAgIFwiaHR0cC1oZWFkZXJzXCIsXG4gICAgICByb2xlLFxuICAgIClcbiAgICB0aGlzLnBhcnNlQXV0aEZuID0gdGhpcy5hZGRGdW5jdGlvbihcIlBhcnNlQXV0aEZ1bmN0aW9uXCIsIFwicGFyc2UtYXV0aFwiLCByb2xlKVxuICAgIHRoaXMucmVmcmVzaEF1dGhGbiA9IHRoaXMuYWRkRnVuY3Rpb24oXG4gICAgICBcIlJlZnJlc2hBdXRoRnVuY3Rpb25cIixcbiAgICAgIFwicmVmcmVzaC1hdXRoXCIsXG4gICAgICByb2xlLFxuICAgIClcbiAgICB0aGlzLnNpZ25PdXRGbiA9IHRoaXMuYWRkRnVuY3Rpb24oXCJTaWduT3V0RnVuY3Rpb25cIiwgXCJzaWduLW91dFwiLCByb2xlKVxuICB9XG5cbiAgcHJpdmF0ZSBhZGRGdW5jdGlvbihpZDogc3RyaW5nLCBhc3NldE5hbWU6IHN0cmluZywgcm9sZTogaWFtLklSb2xlKSB7XG4gICAgY29uc3QgcmVnaW9uID0gU3RhY2sub2YodGhpcykucmVnaW9uXG4gICAgY29uc3Qgc3RhY2tOYW1lID0gU3RhY2sub2YodGhpcykuc3RhY2tOYW1lXG5cbiAgICBjb25zdCBmbiA9IG5ldyBsYW1iZGEuRnVuY3Rpb24odGhpcywgaWQsIHtcbiAgICAgIGNvZGU6XG4gICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInRlc3RcIlxuICAgICAgICAgID8gbGFtYmRhLkNvZGUuZnJvbUlubGluZShcInNuYXBzaG90LXZhbHVlXCIpXG4gICAgICAgICAgOiBsYW1iZGEuQ29kZS5mcm9tQXNzZXQocGF0aC5qb2luKF9fZGlybmFtZSwgYC4uL2Rpc3QvJHthc3NldE5hbWV9YCkpLFxuICAgICAgaGFuZGxlcjogXCJpbmRleC5oYW5kbGVyXCIsXG4gICAgICBydW50aW1lOiBsYW1iZGEuUnVudGltZS5OT0RFSlNfMTZfWCxcbiAgICAgIHRpbWVvdXQ6IER1cmF0aW9uLnNlY29uZHMoNSksXG4gICAgICByb2xlLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIHRoaXMubm9uY2UgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IGBOb25jZSB2YWx1ZTogJHt0aGlzLm5vbmNlfWAsXG4gICAgfSlcblxuICAgIGlmICh0aGlzLm5vZGUuYWRkciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJub2RlLmFkZHIgbm90IGZvdW5kIC0gZW5zdXJlIGF3cy1jZGsgaXMgdXAtdG8tdXBkYXRlXCIpXG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBQYXJhbWV0ZXJSZXNvdXJjZTxsYW1iZGEuSVZlcnNpb24+KHRoaXMsIGAke2lkfVZlcnNpb25QYXJhbWAsIHtcbiAgICAgIG5vbmNlOiBpc1NuYXBzaG90ID8gXCJzbmFwc2hvdFwiIDogdW5kZWZpbmVkLFxuICAgICAgcGFyYW1ldGVyTmFtZTogYC9jZi9yZWdpb24vJHtyZWdpb259L3N0YWNrLyR7c3RhY2tOYW1lfS8ke3RoaXMubm9kZS5hZGRyfS0ke2lkfS1mdW5jdGlvbi1hcm5gLFxuICAgICAgcmVmZXJlbmNlVG9SZXNvdXJjZTogKHNjb3BlLCBpZCwgcmVmZXJlbmNlKSA9PlxuICAgICAgICBsYW1iZGEuVmVyc2lvbi5mcm9tVmVyc2lvbkFybihzY29wZSwgaWQsIHJlZmVyZW5jZSksXG4gICAgICByZWdpb25zOiB0aGlzLnJlZ2lvbnMsXG4gICAgICByZXNvdXJjZTogZm4uY3VycmVudFZlcnNpb24sXG4gICAgICByZXNvdXJjZVRvUmVmZXJlbmNlOiAocmVzb3VyY2UpID0+IHJlc291cmNlLmZ1bmN0aW9uQXJuLFxuICAgIH0pXG4gIH1cbn1cbiJdfQ==
|
package/package.json
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@liflig/cdk-cloudfront-auth",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "CDK Constructs for adding authentication for a CloudFront Distribution",
|
|
5
|
+
"repository": {
|
|
6
|
+
"type": "git",
|
|
7
|
+
"url": "https://github.com/capralifecycle/cdk-cloudfront-auth"
|
|
8
|
+
},
|
|
9
|
+
"scripts": {
|
|
10
|
+
"build": "rimraf dist && webpack && tsc",
|
|
11
|
+
"watch": "tsc -w",
|
|
12
|
+
"test": "jest",
|
|
13
|
+
"lint": "eslint .",
|
|
14
|
+
"lint:fix": "eslint --fix .",
|
|
15
|
+
"prepare": "npm run build && husky install",
|
|
16
|
+
"semantic-release": "semantic-release"
|
|
17
|
+
},
|
|
18
|
+
"keywords": [
|
|
19
|
+
"cdk",
|
|
20
|
+
"cloudfront",
|
|
21
|
+
"authentication"
|
|
22
|
+
],
|
|
23
|
+
"license": "MIT",
|
|
24
|
+
"main": "lib/index.js",
|
|
25
|
+
"types": "lib/index.d.ts",
|
|
26
|
+
"files": [
|
|
27
|
+
"dist/**/*",
|
|
28
|
+
"lib/**/*"
|
|
29
|
+
],
|
|
30
|
+
"publishConfig": {
|
|
31
|
+
"access": "public"
|
|
32
|
+
},
|
|
33
|
+
"devDependencies": {
|
|
34
|
+
"@aws-cdk/assert": "2.68.0",
|
|
35
|
+
"@commitlint/cli": "17.6.7",
|
|
36
|
+
"@commitlint/config-conventional": "17.6.7",
|
|
37
|
+
"@types/aws-lambda": "8.10.136",
|
|
38
|
+
"@types/cookie": "0.5.1",
|
|
39
|
+
"@types/jest": "29.5.3",
|
|
40
|
+
"@types/jsonwebtoken": "8.5.9",
|
|
41
|
+
"@types/node": "18.17.3",
|
|
42
|
+
"@typescript-eslint/eslint-plugin": "5.62.0",
|
|
43
|
+
"@typescript-eslint/parser": "5.62.0",
|
|
44
|
+
"aws-cdk-lib": "2.76.0",
|
|
45
|
+
"aws-sdk": "2.1430.0",
|
|
46
|
+
"axios": "1.6.0",
|
|
47
|
+
"constructs": "10.2.69",
|
|
48
|
+
"cookie": "0.5.0",
|
|
49
|
+
"eslint": "8.46.0",
|
|
50
|
+
"eslint-config-prettier": "8.10.0",
|
|
51
|
+
"eslint-plugin-prettier": "4.2.1",
|
|
52
|
+
"html-loader": "4.2.0",
|
|
53
|
+
"husky": "8.0.3",
|
|
54
|
+
"jest": "29.6.2",
|
|
55
|
+
"jest-cdk-snapshot": "2.0.1",
|
|
56
|
+
"jsonwebtoken": "9.0.0",
|
|
57
|
+
"jwks-rsa": "3.0.1",
|
|
58
|
+
"prettier": "2.8.8",
|
|
59
|
+
"rimraf": "3.0.2",
|
|
60
|
+
"semantic-release": "19.0.5",
|
|
61
|
+
"ts-jest": "29.1.1",
|
|
62
|
+
"ts-loader": "9.4.4",
|
|
63
|
+
"ts-node": "10.9.1",
|
|
64
|
+
"typescript": "4.9.5",
|
|
65
|
+
"webpack": "5.88.2",
|
|
66
|
+
"webpack-cli": "4.10.0"
|
|
67
|
+
},
|
|
68
|
+
"dependencies": {
|
|
69
|
+
"@henrist/cdk-cross-region-params": "^2.0.0",
|
|
70
|
+
"@liflig/cdk-lambda-config": "1.1.1"
|
|
71
|
+
},
|
|
72
|
+
"peerDependencies": {
|
|
73
|
+
"aws-cdk-lib": "^2.0.0"
|
|
74
|
+
}
|
|
75
|
+
}
|