@intuitionrobotics/user-account 0.41.76 → 0.42.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/app-backend/modules/AccountModule.d.ts +8 -2
- package/app-backend/modules/AccountModule.js +42 -1
- package/app-backend/modules/AccountModule.js.map +1 -1
- package/package.json +10 -10
- package/shared/modules/SecretsModule.d.ts +38 -0
- package/shared/modules/SecretsModule.js +125 -0
- package/shared/modules/SecretsModule.js.map +1 -0
- package/shared/utils/JWTBuilder.d.ts +40 -0
- package/shared/utils/JWTBuilder.js +122 -0
- package/shared/utils/JWTBuilder.js.map +1 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Module } from "@intuitionrobotics/ts-common";
|
|
2
2
|
import { FirestoreTransaction } from "@intuitionrobotics/firebase/backend";
|
|
3
|
-
import { DB_Account, DB_Session, FrontType, Request_CreateAccount, Request_LoginAccount, Request_UpsertAccount, Response_Auth, UI_Account, UI_Session } from "./_imports";
|
|
4
|
-
import { ExpressRequest, HeaderKey, QueryRequestInfo } from "@intuitionrobotics/thunderstorm/backend";
|
|
3
|
+
import { DB_Account, DB_Session, FrontType, Request_CreateAccount, Request_LoginAccount, Request_UpsertAccount, Response_Auth, Response_Validation, UI_Account, UI_Session } from "./_imports";
|
|
4
|
+
import { ApiResponse, ExpressRequest, HeaderKey, QueryRequestInfo } from "@intuitionrobotics/thunderstorm/backend";
|
|
5
5
|
export declare const Header_SessionId: HeaderKey;
|
|
6
6
|
declare type Config = {
|
|
7
7
|
projectId: string;
|
|
@@ -9,6 +9,7 @@ declare type Config = {
|
|
|
9
9
|
web: number;
|
|
10
10
|
app: number;
|
|
11
11
|
};
|
|
12
|
+
jwtSecretKey: string;
|
|
12
13
|
};
|
|
13
14
|
export declare const Collection_Sessions = "user-account--sessions";
|
|
14
15
|
export declare const Collection_Accounts = "user-account--accounts";
|
|
@@ -46,6 +47,11 @@ export declare class AccountsModule_Class extends Module<Config> implements Quer
|
|
|
46
47
|
private loginValidate;
|
|
47
48
|
loginSAML(__email: string): Promise<Response_Auth>;
|
|
48
49
|
private createSAML;
|
|
50
|
+
private isAuthRequest;
|
|
51
|
+
private verifyAccount;
|
|
52
|
+
validateAuthenticationHeader(request: ExpressRequest, response?: ApiResponse): Promise<Response_Validation>;
|
|
53
|
+
generateJWT(account: UI_Account, sessionId: string): string;
|
|
54
|
+
validateRequest: (request: ExpressRequest, response?: ApiResponse | undefined) => Promise<UI_Account>;
|
|
49
55
|
validateSession(request: ExpressRequest): Promise<UI_Account>;
|
|
50
56
|
validateSessionId(sessionId: string): Promise<UI_Account>;
|
|
51
57
|
private getUserEmailFromSession;
|
|
@@ -33,6 +33,7 @@ const backend_1 = require("@intuitionrobotics/firebase/backend");
|
|
|
33
33
|
const _imports_1 = require("./_imports");
|
|
34
34
|
const backend_2 = require("@intuitionrobotics/thunderstorm/backend");
|
|
35
35
|
const backend_3 = require("@intuitionrobotics/db-api-generator/backend");
|
|
36
|
+
const SecretsModule_1 = require("../../shared/modules/SecretsModule");
|
|
36
37
|
exports.Header_SessionId = new backend_2.HeaderKey(_imports_1.HeaderKey_SessionId);
|
|
37
38
|
exports.Collection_Sessions = "user-account--sessions";
|
|
38
39
|
exports.Collection_Accounts = "user-account--accounts";
|
|
@@ -45,6 +46,12 @@ function getUIAccount(account) {
|
|
|
45
46
|
class AccountsModule_Class extends ts_common_1.Module {
|
|
46
47
|
constructor() {
|
|
47
48
|
super();
|
|
49
|
+
this.isAuthRequest = (request) => request.header(SecretsModule_1.SecretsModule.AUTHENTICATION_KEY) !== undefined;
|
|
50
|
+
this.validateRequest = (request, response) => __awaiter(this, void 0, void 0, function* () {
|
|
51
|
+
if (this.isAuthRequest(request))
|
|
52
|
+
return this.validateAuthenticationHeader(request, response);
|
|
53
|
+
return yield this.validateSession(request);
|
|
54
|
+
});
|
|
48
55
|
this.TTLExpired = (session) => {
|
|
49
56
|
const delta = ts_common_1.currentTimeMillies() - session.timestamp;
|
|
50
57
|
let sessionTTLms = this.config.sessionTTLms.web;
|
|
@@ -67,7 +74,7 @@ class AccountsModule_Class extends ts_common_1.Module {
|
|
|
67
74
|
const account = yield this.getUserEmailFromSession(session);
|
|
68
75
|
return { sessionId: session.sessionId, email: account.email, _id: account._id };
|
|
69
76
|
});
|
|
70
|
-
this.setDefaultConfig({ sessionTTLms: { web: ts_common_1.Day, app: ts_common_1.Day } });
|
|
77
|
+
this.setDefaultConfig({ sessionTTLms: { web: ts_common_1.Day, app: ts_common_1.Day }, jwtSecretKey: "TS_AUTH_SECRET" });
|
|
71
78
|
}
|
|
72
79
|
__queryRequestInfo(request) {
|
|
73
80
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -267,6 +274,40 @@ class AccountsModule_Class extends ts_common_1.Module {
|
|
|
267
274
|
return toRet;
|
|
268
275
|
});
|
|
269
276
|
}
|
|
277
|
+
verifyAccount(account) {
|
|
278
|
+
if (!account)
|
|
279
|
+
throw new ts_common_1.BadImplementationException('Missing account in token payload');
|
|
280
|
+
const email = account['email'];
|
|
281
|
+
if (!email || typeof email !== 'string')
|
|
282
|
+
throw new ts_common_1.BadImplementationException('Missing email in token payload');
|
|
283
|
+
const _id = account['_id'];
|
|
284
|
+
if (!_id || typeof _id !== 'string')
|
|
285
|
+
throw new ts_common_1.BadImplementationException('Missing _id in token payload');
|
|
286
|
+
return { _id, email };
|
|
287
|
+
}
|
|
288
|
+
validateAuthenticationHeader(request, response) {
|
|
289
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
290
|
+
const token = SecretsModule_1.SecretsModule.validateRequest(request);
|
|
291
|
+
const payload = token.payload;
|
|
292
|
+
const isExpired = SecretsModule_1.SecretsModule.isExpired(token);
|
|
293
|
+
const sessionId = payload.sessionId;
|
|
294
|
+
if (!sessionId)
|
|
295
|
+
throw new ts_common_1.BadImplementationException(`Missing session id in token ${JSON.stringify(payload)}`);
|
|
296
|
+
if (!isExpired) {
|
|
297
|
+
const account = payload.account;
|
|
298
|
+
this.verifyAccount(account);
|
|
299
|
+
return account;
|
|
300
|
+
}
|
|
301
|
+
const resp = yield this.validateSession(sessionId);
|
|
302
|
+
// Set in header response
|
|
303
|
+
if (response)
|
|
304
|
+
response.setHeaders({ "jwt": this.generateJWT(resp, sessionId) });
|
|
305
|
+
return resp;
|
|
306
|
+
});
|
|
307
|
+
}
|
|
308
|
+
generateJWT(account, sessionId) {
|
|
309
|
+
return SecretsModule_1.SecretsModule.generateJwt({ account, sessionId, exp: ts_common_1.currentTimeMillies() + (30 * ts_common_1.Minute) }, this.config.jwtSecretKey);
|
|
310
|
+
}
|
|
270
311
|
validateSession(request) {
|
|
271
312
|
return __awaiter(this, void 0, void 0, function* () {
|
|
272
313
|
const sessionId = exports.Header_SessionId.get(request);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccountModule.js","sourceRoot":"","sources":["../../../src/main/app-backend/modules/AccountModule.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,4DAUsC;AAGtC,iEAI6C;AAC7C,yCAWoB;AACpB,qEAKiD;AACjD,yEAA0E;AAE7D,QAAA,gBAAgB,GAAG,IAAI,mBAAS,CAAC,8BAAmB,CAAC,CAAC;AAOtD,QAAA,mBAAmB,GAAG,wBAAwB,CAAC;AAC/C,QAAA,mBAAmB,GAAG,wBAAwB,CAAC;AAU5D,MAAM,oBAAoB,GAAG,IAAI,sBAAU,CAA+B,eAAe,CAAC,CAAC;AAC3F,MAAM,4BAA4B,GAAG,IAAI,sBAAU,CAA+C,uBAAuB,CAAC,CAAC;AAE3H,SAAS,YAAY,CAAC,OAAmB;IACxC,MAAM,EAAC,KAAK,EAAE,GAAG,EAAC,GAAG,OAAO,CAAC;IAC7B,OAAO,EAAC,KAAK,EAAE,GAAG,EAAC,CAAC;AACrB,CAAC;AAED,MAAa,oBACZ,SAAQ,kBAAc;IAEtB;QACC,KAAK,EAAE,CAAC;QA8PD,eAAU,GAAG,CAAC,OAAmB,EAAE,EAAE;YAC5C,MAAM,KAAK,GAAG,8BAAkB,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC;YACvD,IAAI,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC;YAEhD,IAAI,OAAO,CAAC,SAAS,KAAK,oBAAS,CAAC,GAAG;gBACtC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC;YAE7C,OAAO,KAAK,GAAG,YAAY,IAAI,KAAK,GAAG,CAAC,CAAC;QAC1C,CAAC,CAAC;QAEK,kBAAa,GAAG,CAAO,MAAc,EAAE,SAAqB,EAA0B,EAAE;YAC9F,IAAI,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAC,KAAK,EAAE,EAAC,MAAM,EAAC,EAAC,CAAC,CAAC;YACjE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;gBACzC,OAAO,GAAG;oBACT,SAAS,EAAE,uBAAW,CAAC,EAAE,CAAC;oBAC1B,SAAS,EAAE,8BAAkB,EAAE;oBAC/B,MAAM;iBACN,CAAC;gBAEF,IAAI,SAAS;oBACZ,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;gBAE/B,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;aACpC;YAED,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;YAC5D,OAAO,EAAC,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAC,CAAC;QAC/E,CAAC,CAAA,CAAC;QAxRD,IAAI,CAAC,gBAAgB,CAAC,EAAC,YAAY,EAAE,EAAC,GAAG,EAAE,eAAG,EAAE,GAAG,EAAE,eAAG,EAAC,EAAC,CAAC,CAAC;IAC7D,CAAC;IAEK,kBAAkB,CAAC,OAAuB;;YAC/C,IAAI,IAA4B,CAAC;YACjC,IAAI;gBACH,IAAI,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;aAC3C;YAAC,OAAO,CAAC,EAAE;aACX;YAED,OAAO;gBACN,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE;gBACnB,IAAI,EAAE,IAAI;aACV,CAAC;QACH,CAAC;KAAA;IAKS,IAAI;QACb,MAAM,SAAS,GAAG,wBAAc,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,YAAY,EAAE,CAAC;QAC1F,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,aAAa,CAAa,2BAAmB,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;QACrF,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,aAAa,CAAa,2BAAmB,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACrF,CAAC;IAEK,OAAO,CAAC,MAAc;;YAC3B,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;gBACC,KAAK,EAAE,EAAC,KAAK,EAAC;gBACd,MAAM,EAAE,CAAC,OAAO;oBACP,KAAK,CAAC;aACf,CAAC,CAAC;QACrC,CAAC;KAAA;IAEK,SAAS;;YACd,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK;gBACL,OAAO,CAAC,CAA8C,CAAC;QACrF,CAAC;KAAA;IAEK,YAAY;;YACjB,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,QAAQ;gBACR,WAAW,CAAC,CAAC,CAAC;QAC5C,CAAC;KAAA;IAEK,UAAU,CAAC,MAAc;;YAC9B,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAC,KAAK,EAAE,EAAC,KAAK,EAAC,EAAC,CAAC,CAAC;QACpD,CAAC;KAAA;IAEK,aAAa,CAAC,MAAc;;YACjC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAC9C,IAAI,CAAC,OAAO;gBACX,OAAO;YAER,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;gBACC,MAAM,EAAE,CAAC,QAAQ;oBACR,WAAW;oBACX,WAAW,CAAC,EAAE,KAAK,EAAE,EAAC,MAAM,EAAE,OAAO,CAAC,GAAG,EAAC;aACnD,CAAC,CAAC;YAC9C,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAmB,EAAE,EAAE;gBAC3C,uCACI,OAAO,KACV,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IACnC;YACF,CAAC,CAAC,CAAC;QACJ,CAAC;KAAA;IAEK,MAAM,CAAC,OAA8B;;YAC1C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YAElD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC1C,MAAM,4BAA4B,CAAC,mBAAmB,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAChF,OAAO,OAAO,CAAC;QAChB,CAAC;KAAA;IAEK,MAAM,CAAC,OAA8B;;YAC1C,IAAI,QAAQ,GAA4B,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;YACjE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAO,WAAW,EAAE,EAAE;gBAC1E,MAAM,YAAY,GAAG,MAAM,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAC,KAAK,EAAE,EAAC,KAAK,EAAE,OAAO,CAAC,KAAK,EAAC,EAAC,CAAC,CAAC;gBACnG,IAAI,YAAY;oBACf,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;gBAE1E,QAAQ,GAAG,GAAS,EAAE,gDAAC,OAAA,4BAA4B,CAAC,mBAAmB,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA,GAAA,CAAC;gBACjG,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;YAC9C,CAAC,CAAA,CAAC,CAAC;YAEH,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YACzC,MAAM,QAAQ,EAAE,CAAA;YAChB,OAAO,YAAY,CAAC,OAAO,CAAC,CAAC;QAC9B,CAAC;KAAA;IAEK,aAAa,CAAC,KAAa,EAAE,QAAiB,EAAE,cAAuB;;YAC5E,IAAI,OAAmB,CAAC;YACxB,IAAI,QAAQ,IAAI,cAAc,EAAE;gBAC/B,OAAO,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,EAAC,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAC,CAAC,CAAC;gBACtE,MAAM,4BAA4B,CAAC,mBAAmB,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;aAChF;;gBACA,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAExC,OAAO,YAAY,CAAC,OAAO,CAAC,CAAC;QAC9B,CAAC;KAAA;IAEK,cAAc,CAAC,SAAiB,EAAE,WAAmB,EAAE,YAAmC;;YAC/F,MAAM,KAAK,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;YACtC,MAAM,SAAS,GAAG,CAAO,WAAiC,EAAE,EAAE;gBAC7D,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAC,KAAK,EAAE,EAAC,KAAK,EAAC,EAAC,CAAC,CAAC;gBAC/E,IAAI,CAAC,OAAO;oBACX,MAAM,IAAI,sBAAY,CAAC,GAAG,EAAE,gCAAgC,CAAC,CAAC;gBAE/D,IAAI,CAAC,OAAO,CAAC,cAAc,IAAI,CAAC,OAAO,CAAC,IAAI;oBAC3C,MAAM,IAAI,sBAAY,CAAC,GAAG,EAAE,0BAA0B,CAAC,CAAC;gBAEzD,OAAO,CAAC,cAAc,GAAG,gCAAoB,CAAC,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;gBACzE,OAAO,CAAC,MAAM,GAAG,mBAAO,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC;gBAEpD,OAAO,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACnD,CAAC,CAAA,CAAC;YAEF,IAAI,YAAY;gBACf,OAAO,SAAS,CAAC,YAAY,CAAC,CAAA;YAE/B,OAAO,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAClD,CAAC;KAAA;IAEK,aAAa,CAAC,OAA8B;;YACjD,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YAC5C,oBAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,uBAAa,CAAC,CAAC;YAEvC,OAAO,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAO,WAAiC,EAAE,EAAE;gBACjF,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAC,KAAK,EAAE,EAAC,KAAK,EAAE,OAAO,CAAC,KAAK,EAAC,EAAC,CAAC,CAAC;gBAC9F,IAAI,OAAO;oBACV,MAAM,IAAI,sBAAY,CAAC,GAAG,EAAE,gCAAgC,CAAC,CAAC;gBAE/D,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,WAAW,CAAC,CAAA;YAC7C,CAAC,CAAA,CAAC,CAAC;QACJ,CAAC;KAAA;IAEO,UAAU,CAAC,OAA8B,EAAE,WAAiC;QACnF,MAAM,IAAI,GAAG,uBAAW,CAAC,EAAE,CAAC,CAAC;QAC7B,MAAM,OAAO,GAAG;YACf,GAAG,EAAE,uBAAW,CAAC,EAAE,CAAC;YACpB,MAAM,EAAE,mBAAO,CAAC,OAAO,CAAC,KAAK,CAAC;YAC9B,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,IAAI;YACJ,cAAc,EAAE,gCAAoB,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC;SAC5D,CAAC;QAEF,OAAO,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACnD,CAAC;IAEK,MAAM,CAAC,SAAiB;;YAC7B,MAAM,KAAK,GAAG,EAAC,KAAK,EAAE,EAAC,SAAS,EAAC,EAAC,CAAC;YACnC,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QACzC,CAAC;KAAA;IAEK,KAAK,CAAC,OAA6B;;YACxC,OAAO,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC1C,CAAC;KAAA;IAIa,aAAa,CAAC,OAA6B,EAAE,eAAe,GAAG,IAAI;;YAChF,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YAC5C,MAAM,KAAK,GAAG,EAAC,KAAK,EAAE,EAAC,KAAK,EAAE,OAAO,CAAC,KAAK,EAAC,EAAC,CAAC;YAC9C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YACvD,IAAI,CAAC,OAAO;gBACX,MAAM,IAAI,sBAAY,CAAC,GAAG,EAAE,yBAAyB,CAAC,CAAC;YAExD,IAAI,CAAC,OAAO,CAAC,cAAc,IAAI,CAAC,OAAO,CAAC,IAAI;gBAC3C,MAAM,IAAI,sBAAY,CAAC,GAAG,EAAE,0BAA0B,CAAC,CAAC;YAEzD,IAAI,OAAO,CAAC,cAAc,KAAK,gCAAoB,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC;gBAClF,MAAM,IAAI,sBAAY,CAAC,GAAG,EAAE,4BAA4B,CAAC,CAAC;YAE3D,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;gBACjB,OAAO,CAAC,GAAG,GAAG,uBAAW,CAAC,EAAE,CAAC,CAAC;gBAC9B,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;aACpC;YAED,IAAI,oBAA+C,CAAA;YACnD,IAAI,eAAe;gBAClB,oBAAoB,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;YAEjF,MAAM,oBAAoB,CAAC,mBAAmB,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACxE,OAAO,oBAAoB,CAAC;QAC7B,CAAC;KAAA;IAEK,SAAS,CAAC,OAAe;;YAC9B,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;YACrC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAE9C,MAAM,oBAAoB,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACnE,MAAM,oBAAoB,CAAC,mBAAmB,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACxE,OAAO,oBAAoB,CAAC;QAC7B,CAAC;KAAA;IAEa,UAAU,CAAC,OAAe;;YACvC,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;YACrC,MAAM,KAAK,GAAG,EAAC,KAAK,EAAE,EAAC,KAAK,EAAE,MAAM,EAAC,EAAC,CAAC;YACvC,IAAI,aAAa,GAAG,KAAK,CAAC;YAC1B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAa,CAAO,WAAW,EAAE,EAAE;gBACpF,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;gBACpE,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,GAAG;oBACf,OAAO,OAAO,CAAC;gBAEhB,MAAM,QAAQ,mBACb,GAAG,EAAE,uBAAW,CAAC,EAAE,CAAC,EACpB,MAAM,EAAE,mBAAO,CAAC,MAAM,CAAC,EACvB,KAAK,EAAE,MAAM,IACV,OAAO,CACV,CAAC;gBAEF,aAAa,GAAG,IAAI,CAAC;gBACrB,OAAO,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACpD,CAAC,CAAA,CAAC,CAAC;YAEH,IAAI,aAAa;gBAChB,MAAM,4BAA4B,CAAC,mBAAmB,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAE/E,OAAO,KAAK,CAAC;QACd,CAAC;KAAA;IAEK,eAAe,CAAC,OAAuB;;YAC5C,MAAM,SAAS,GAAG,wBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAChD,IAAI,CAAC,SAAS;gBACb,MAAM,IAAI,sBAAY,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC;YAElD,OAAO,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAC1C,CAAC;KAAA;IAEK,iBAAiB,CAAC,SAAiB;;YACxC,MAAM,KAAK,GAAG,EAAC,KAAK,EAAE,EAAC,SAAS,EAAC,EAAC,CAAC;YAEnC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YACvD,IAAI,CAAC,OAAO;gBACX,MAAM,IAAI,sBAAY,CAAC,GAAG,EAAE,uBAAuB,SAAS,EAAE,CAAC,CAAC;YAEjE,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;gBAC3B,MAAM,IAAI,sBAAY,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC;YAElD,OAAO,MAAM,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;QACpD,CAAC;KAAA;IAEa,uBAAuB,CAAC,OAAmB;;YACxD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAC,KAAK,EAAE,EAAC,GAAG,EAAE,OAAO,CAAC,MAAM,EAAC,EAAC,CAAC,CAAC;YAChF,IAAI,CAAC,OAAO,EAAE;gBACb,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;gBACxC,MAAM,IAAI,sBAAY,CAAC,GAAG,EAAE,8BAA8B,uBAAW,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;aAClF;YAED,OAAO,YAAY,CAAC,OAAO,CAAC,CAAC;QAC9B,CAAC;KAAA;CA+BD;AA/RD,oDA+RC;AAGY,QAAA,aAAa,GAAG,IAAI,oBAAoB,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"AccountModule.js","sourceRoot":"","sources":["../../../src/main/app-backend/modules/AccountModule.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@intuitionrobotics/user-account",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.42.0",
|
|
4
4
|
"description": "User Account",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"IR",
|
|
@@ -30,28 +30,28 @@
|
|
|
30
30
|
"build": "tsc"
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@intuitionrobotics/ts-common": "~0.
|
|
33
|
+
"@intuitionrobotics/ts-common": "~0.42.0",
|
|
34
|
+
"@types/jws": "^3.2.4",
|
|
35
|
+
"@types/saml2-js": "^1.6.8",
|
|
36
|
+
"jws": "^4.0.0",
|
|
34
37
|
"moment": "^2.24.0",
|
|
35
38
|
"saml2-js": "^2.0.5",
|
|
36
39
|
"xmlbuilder": "^15.1.1"
|
|
37
40
|
},
|
|
38
41
|
"devDependencies": {
|
|
39
|
-
"@intuitionrobotics/db-api-generator": "~0.
|
|
40
|
-
"@intuitionrobotics/firebase": "~0.
|
|
41
|
-
"@intuitionrobotics/storm": "~0.
|
|
42
|
-
"@intuitionrobotics/testelot": "~0.
|
|
43
|
-
"@intuitionrobotics/thunderstorm": "~0.
|
|
42
|
+
"@intuitionrobotics/db-api-generator": "~0.42.0",
|
|
43
|
+
"@intuitionrobotics/firebase": "~0.42.0",
|
|
44
|
+
"@intuitionrobotics/storm": "~0.42.0",
|
|
45
|
+
"@intuitionrobotics/testelot": "~0.42.0",
|
|
46
|
+
"@intuitionrobotics/thunderstorm": "~0.42.0",
|
|
44
47
|
"@types/express": "^4.16.1",
|
|
45
48
|
"@types/history": "^4.7.2",
|
|
46
49
|
"@types/react": "^16.8.7",
|
|
47
|
-
"@types/request": "^2.48.1",
|
|
48
|
-
"@types/saml2-js": "^1.6.8",
|
|
49
50
|
"express": "^4.16.4",
|
|
50
51
|
"firebase": "^9.9.1",
|
|
51
52
|
"firebase-admin": "^11.0.0",
|
|
52
53
|
"firebase-functions": "^3.22.0",
|
|
53
54
|
"react": "^16.0.0",
|
|
54
|
-
"request": "^2.88.0",
|
|
55
55
|
"ts-node": "^8.6.2",
|
|
56
56
|
"tslint": "^5.16.0",
|
|
57
57
|
"typescript": "~4.1.0",
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { Module, ObjectTS } from "@intuitionrobotics/ts-common";
|
|
2
|
+
import { ExpressRequest } from "@intuitionrobotics/thunderstorm/backend";
|
|
3
|
+
import * as jws from "jws";
|
|
4
|
+
import { Algorithm, Signature } from "jws";
|
|
5
|
+
import { CustomException } from "@intuitionrobotics/ts-common/core/exceptions";
|
|
6
|
+
export declare class TokenExpiredException extends CustomException {
|
|
7
|
+
constructor(message: string, cause?: Error);
|
|
8
|
+
}
|
|
9
|
+
declare type Config = {
|
|
10
|
+
secrets?: {
|
|
11
|
+
[k: string]: any;
|
|
12
|
+
};
|
|
13
|
+
authSecretKey: string;
|
|
14
|
+
issuer: string;
|
|
15
|
+
};
|
|
16
|
+
declare type Secret = {
|
|
17
|
+
kid: string;
|
|
18
|
+
value: string;
|
|
19
|
+
};
|
|
20
|
+
export declare class SecretsModule_Class extends Module<Config> {
|
|
21
|
+
private DEFAULT_ISS;
|
|
22
|
+
AUTHENTICATION_PREFIX: string;
|
|
23
|
+
AUTHENTICATION_KEY: string;
|
|
24
|
+
constructor(tag?: string, name?: string);
|
|
25
|
+
getSecret(k: string): Secret;
|
|
26
|
+
getAuthSecret: (kid: string) => Secret;
|
|
27
|
+
private getConfig;
|
|
28
|
+
validateRequestAndCheckExpiration(request: ExpressRequest, keyId?: string): any;
|
|
29
|
+
validateRequest(request: ExpressRequest, keyId?: string): jws.Signature;
|
|
30
|
+
extractAuthToken(request: ExpressRequest): string;
|
|
31
|
+
isExpired: (token: Signature) => boolean;
|
|
32
|
+
getExpiration(token: Signature): any;
|
|
33
|
+
generateJwt: (payload: ObjectTS, kid: string, algorithm?: Algorithm) => string;
|
|
34
|
+
getIss: () => string;
|
|
35
|
+
decodeJwt: (jwt: string) => jws.Signature;
|
|
36
|
+
}
|
|
37
|
+
export declare const SecretsModule: SecretsModule_Class;
|
|
38
|
+
export {};
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SecretsModule = exports.SecretsModule_Class = exports.TokenExpiredException = void 0;
|
|
4
|
+
const ts_common_1 = require("@intuitionrobotics/ts-common");
|
|
5
|
+
const jws = require("jws");
|
|
6
|
+
const JWTBuilder_1 = require("../utils/JWTBuilder");
|
|
7
|
+
const exceptions_1 = require("@intuitionrobotics/ts-common/core/exceptions");
|
|
8
|
+
class TokenExpiredException extends exceptions_1.CustomException {
|
|
9
|
+
constructor(message, cause) {
|
|
10
|
+
super(TokenExpiredException, message, cause);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
exports.TokenExpiredException = TokenExpiredException;
|
|
14
|
+
class SecretsModule_Class extends ts_common_1.Module {
|
|
15
|
+
constructor(tag, name) {
|
|
16
|
+
super(tag, name);
|
|
17
|
+
this.DEFAULT_ISS = "TOOLS";
|
|
18
|
+
this.AUTHENTICATION_PREFIX = "Bearer";
|
|
19
|
+
this.AUTHENTICATION_KEY = "Authorization";
|
|
20
|
+
this.getAuthSecret = (kid) => {
|
|
21
|
+
return this.getSecret(kid);
|
|
22
|
+
};
|
|
23
|
+
this.getConfig = () => {
|
|
24
|
+
if (!this.config)
|
|
25
|
+
throw new ts_common_1.BadImplementationException(`Missing config, check SecretsModule's config`);
|
|
26
|
+
if (!this.config.secrets)
|
|
27
|
+
throw new ts_common_1.BadImplementationException(`Missing 'secrets' key in config, check SecretsModule's config`);
|
|
28
|
+
return this.config.secrets;
|
|
29
|
+
};
|
|
30
|
+
this.isExpired = (token) => {
|
|
31
|
+
return this.getExpiration(token) < ts_common_1.currentTimeMillies();
|
|
32
|
+
};
|
|
33
|
+
this.generateJwt = (payload, kid, algorithm = "HS256") => {
|
|
34
|
+
const secret = this.getAuthSecret(kid);
|
|
35
|
+
return new JWTBuilder_1.JWTBuilder(algorithm)
|
|
36
|
+
// This is a default that can be overwritten by the claims
|
|
37
|
+
.setExpiration(ts_common_1.currentTimeMillies() + ts_common_1.Day)
|
|
38
|
+
.addClaims(payload)
|
|
39
|
+
.setIssuer(this.getIss())
|
|
40
|
+
.setKeyID(secret.kid)
|
|
41
|
+
.build(secret.value);
|
|
42
|
+
};
|
|
43
|
+
this.getIss = () => {
|
|
44
|
+
const issuer = this.config.issuer;
|
|
45
|
+
if (!issuer)
|
|
46
|
+
return this.DEFAULT_ISS;
|
|
47
|
+
return issuer;
|
|
48
|
+
};
|
|
49
|
+
this.decodeJwt = (jwt) => {
|
|
50
|
+
return jws.decode(jwt);
|
|
51
|
+
};
|
|
52
|
+
this.setDefaultConfig({ authSecretKey: "AUTH_SECRET" });
|
|
53
|
+
}
|
|
54
|
+
getSecret(k) {
|
|
55
|
+
var _a, _b;
|
|
56
|
+
const secret = ((_a = this.getConfig()) === null || _a === void 0 ? void 0 : _a[k]) || ((_b = process.env) === null || _b === void 0 ? void 0 : _b[k]);
|
|
57
|
+
if (!secret)
|
|
58
|
+
throw new ts_common_1.BadImplementationException(`Missing secret with key ${k} in SecretsModule`);
|
|
59
|
+
return {
|
|
60
|
+
kid: k,
|
|
61
|
+
value: secret
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
validateRequestAndCheckExpiration(request, keyId) {
|
|
65
|
+
const token = this.validateRequest(request, keyId);
|
|
66
|
+
if (this.isExpired(token)) {
|
|
67
|
+
const cause = `The JWT passed is not valid, check. With payload: ${ts_common_1.__stringify(token.payload)}. The JWT passed is expired`;
|
|
68
|
+
throw new TokenExpiredException(cause);
|
|
69
|
+
}
|
|
70
|
+
return token.payload;
|
|
71
|
+
}
|
|
72
|
+
// Specify a kid to force the usage of it
|
|
73
|
+
validateRequest(request, keyId) {
|
|
74
|
+
var _a;
|
|
75
|
+
const authToken = this.extractAuthToken(request);
|
|
76
|
+
const token = this.decodeJwt(authToken);
|
|
77
|
+
const kid = keyId || token.header.kid;
|
|
78
|
+
if (!kid)
|
|
79
|
+
throw new ts_common_1.BadImplementationException("Could not deduce which key to use in order to verify the token, please specify a key ID");
|
|
80
|
+
const secret = this.getAuthSecret(kid);
|
|
81
|
+
const verified = jws.verify(authToken, token.header.alg, secret.value);
|
|
82
|
+
let cause = `The JWT passed is not valid, check. With payload: ${ts_common_1.__stringify(token.payload)}.`;
|
|
83
|
+
if (!verified || !token)
|
|
84
|
+
throw new ts_common_1.BadImplementationException(cause);
|
|
85
|
+
if (!((_a = token.payload) === null || _a === void 0 ? void 0 : _a[JWTBuilder_1.EXPIRES_AT])) {
|
|
86
|
+
cause += ` The JWT is missing the expiration claim`;
|
|
87
|
+
throw new ts_common_1.BadImplementationException(cause);
|
|
88
|
+
}
|
|
89
|
+
return token;
|
|
90
|
+
}
|
|
91
|
+
extractAuthToken(request) {
|
|
92
|
+
const authHead = request.header(this.AUTHENTICATION_KEY);
|
|
93
|
+
if (authHead === undefined)
|
|
94
|
+
throw new ts_common_1.BadImplementationException("Missing Authorization header");
|
|
95
|
+
if (!authHead)
|
|
96
|
+
throw new ts_common_1.BadImplementationException('The Authorization header is empty');
|
|
97
|
+
const parts = authHead.split(" ");
|
|
98
|
+
if (parts.length !== 2 || parts[0] !== this.AUTHENTICATION_PREFIX)
|
|
99
|
+
throw new ts_common_1.BadImplementationException(`The Authorization header is malformed` + "\n"
|
|
100
|
+
+ `Value: ${authHead}` + "\n"
|
|
101
|
+
+ `Expected Value: ${this.AUTHENTICATION_PREFIX} [token]`);
|
|
102
|
+
const authToken = parts[1].trim();
|
|
103
|
+
if (!authToken)
|
|
104
|
+
throw new ts_common_1.BadImplementationException(`The token provided is empty`);
|
|
105
|
+
return authToken;
|
|
106
|
+
}
|
|
107
|
+
getExpiration(token) {
|
|
108
|
+
let exp = token.payload[JWTBuilder_1.EXPIRES_AT];
|
|
109
|
+
if (!exp)
|
|
110
|
+
return exp;
|
|
111
|
+
const now = ts_common_1.currentTimeMillies();
|
|
112
|
+
const cutOff = 1000000000000; // 3-3-1973 in milliseconds
|
|
113
|
+
const isInSeconds = exp < cutOff;
|
|
114
|
+
if (isInSeconds)
|
|
115
|
+
exp = exp * 1000;
|
|
116
|
+
const year = 365 * ts_common_1.Day;
|
|
117
|
+
if (exp < now - year || exp > now + (year))
|
|
118
|
+
throw new ts_common_1.BadImplementationException(`The JWT passed is not valid. Payload: ${ts_common_1.__stringify(token.payload)}.` +
|
|
119
|
+
`Malformed JWT, expiry date is not valid, check the exp format, assumed to be in ${isInSeconds ? "seconds" : "milliseconds"}`);
|
|
120
|
+
return exp;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
exports.SecretsModule_Class = SecretsModule_Class;
|
|
124
|
+
exports.SecretsModule = new SecretsModule_Class();
|
|
125
|
+
//# sourceMappingURL=SecretsModule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SecretsModule.js","sourceRoot":"","sources":["../../../src/main/shared/modules/SecretsModule.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { ObjectTS } from "@intuitionrobotics/ts-common";
|
|
2
|
+
import { Algorithm } from "jws";
|
|
3
|
+
export declare type AlgType = 'alg';
|
|
4
|
+
export declare const ALGORITHM: AlgType;
|
|
5
|
+
export declare const CONTENT_TYPE = "cty";
|
|
6
|
+
export declare const TYPE = "typ";
|
|
7
|
+
export declare const KEY_ID = "kid";
|
|
8
|
+
export declare const ISSUER = "iss";
|
|
9
|
+
export declare const SUBJECT = "sub";
|
|
10
|
+
export declare const EXPIRES_AT = "exp";
|
|
11
|
+
export declare const NOT_BEFORE = "nbf";
|
|
12
|
+
export declare const ISSUED_AT = "iat";
|
|
13
|
+
export declare const JWT_ID = "jti";
|
|
14
|
+
export declare const AUDIENCE = "aud";
|
|
15
|
+
export declare const TYP_DEFAULT: string;
|
|
16
|
+
export declare class JWTBuilder {
|
|
17
|
+
private payload;
|
|
18
|
+
private readonly header;
|
|
19
|
+
constructor(alg: Algorithm);
|
|
20
|
+
addClaims(claims: ObjectTS): this;
|
|
21
|
+
addClaim(key: string, value: any): this;
|
|
22
|
+
addHeader(key: string, value: any): this;
|
|
23
|
+
setAlgorithm: (alg: Algorithm) => this;
|
|
24
|
+
setContentType: (cty: string) => this;
|
|
25
|
+
setType: (typ: string) => this;
|
|
26
|
+
setKeyID: (kid: string) => this;
|
|
27
|
+
setIssuer(iss: string): this;
|
|
28
|
+
setSub(iss: string): this;
|
|
29
|
+
setExpiration(exp: number): this;
|
|
30
|
+
setNotBefore(nbf: string): this;
|
|
31
|
+
setIssuedAt(iat: string): this;
|
|
32
|
+
setJWTID(jti: string): this;
|
|
33
|
+
setAudience(aud: string): this;
|
|
34
|
+
private getIssuer;
|
|
35
|
+
private getAlgorithm;
|
|
36
|
+
private getExpiration;
|
|
37
|
+
private getType;
|
|
38
|
+
private assertAlg;
|
|
39
|
+
build(secret: string): string;
|
|
40
|
+
}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.JWTBuilder = exports.TYP_DEFAULT = exports.AUDIENCE = exports.JWT_ID = exports.ISSUED_AT = exports.NOT_BEFORE = exports.EXPIRES_AT = exports.SUBJECT = exports.ISSUER = exports.KEY_ID = exports.TYPE = exports.CONTENT_TYPE = exports.ALGORITHM = void 0;
|
|
4
|
+
const ts_common_1 = require("@intuitionrobotics/ts-common");
|
|
5
|
+
const jws = require("jws");
|
|
6
|
+
const jws_1 = require("jws");
|
|
7
|
+
const SecretsModule_1 = require("../modules/SecretsModule");
|
|
8
|
+
//Header
|
|
9
|
+
exports.ALGORITHM = "alg";
|
|
10
|
+
exports.CONTENT_TYPE = "cty";
|
|
11
|
+
exports.TYPE = "typ";
|
|
12
|
+
exports.KEY_ID = "kid";
|
|
13
|
+
//Payload
|
|
14
|
+
exports.ISSUER = "iss";
|
|
15
|
+
exports.SUBJECT = "sub";
|
|
16
|
+
exports.EXPIRES_AT = "exp";
|
|
17
|
+
exports.NOT_BEFORE = "nbf";
|
|
18
|
+
exports.ISSUED_AT = "iat";
|
|
19
|
+
exports.JWT_ID = "jti";
|
|
20
|
+
exports.AUDIENCE = "aud";
|
|
21
|
+
exports.TYP_DEFAULT = "JWT";
|
|
22
|
+
class JWTBuilder {
|
|
23
|
+
constructor(alg) {
|
|
24
|
+
this.payload = {};
|
|
25
|
+
// End Generic
|
|
26
|
+
this.setAlgorithm = (alg) => {
|
|
27
|
+
this.assertAlg(alg);
|
|
28
|
+
this.header[exports.ALGORITHM] = alg;
|
|
29
|
+
return this;
|
|
30
|
+
};
|
|
31
|
+
this.setContentType = (cty) => {
|
|
32
|
+
this.header[exports.CONTENT_TYPE] = cty;
|
|
33
|
+
return this;
|
|
34
|
+
};
|
|
35
|
+
this.setType = (typ) => {
|
|
36
|
+
this.header[exports.TYPE] = typ;
|
|
37
|
+
return this;
|
|
38
|
+
};
|
|
39
|
+
this.setKeyID = (kid) => {
|
|
40
|
+
this.header[exports.KEY_ID] = kid;
|
|
41
|
+
return this;
|
|
42
|
+
};
|
|
43
|
+
this.assertAlg(alg);
|
|
44
|
+
this.header = {
|
|
45
|
+
[exports.ALGORITHM]: alg
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
// Generic
|
|
49
|
+
addClaims(claims) {
|
|
50
|
+
Object.keys(claims).forEach(k => this.addClaim(k, claims[k]));
|
|
51
|
+
return this;
|
|
52
|
+
}
|
|
53
|
+
addClaim(key, value) {
|
|
54
|
+
this.payload[key] = value;
|
|
55
|
+
return this;
|
|
56
|
+
}
|
|
57
|
+
addHeader(key, value) {
|
|
58
|
+
this.header[key] = value;
|
|
59
|
+
return this;
|
|
60
|
+
}
|
|
61
|
+
// Payload
|
|
62
|
+
setIssuer(iss) {
|
|
63
|
+
this.payload[exports.ISSUER] = iss;
|
|
64
|
+
return this;
|
|
65
|
+
}
|
|
66
|
+
setSub(iss) {
|
|
67
|
+
this.payload[exports.SUBJECT] = iss;
|
|
68
|
+
return this;
|
|
69
|
+
}
|
|
70
|
+
setExpiration(exp) {
|
|
71
|
+
this.payload[exports.EXPIRES_AT] = exp;
|
|
72
|
+
return this;
|
|
73
|
+
}
|
|
74
|
+
setNotBefore(nbf) {
|
|
75
|
+
this.payload[exports.NOT_BEFORE] = nbf;
|
|
76
|
+
return this;
|
|
77
|
+
}
|
|
78
|
+
setIssuedAt(iat) {
|
|
79
|
+
this.payload[exports.ISSUED_AT] = iat;
|
|
80
|
+
return this;
|
|
81
|
+
}
|
|
82
|
+
setJWTID(jti) {
|
|
83
|
+
this.payload[exports.JWT_ID] = jti;
|
|
84
|
+
return this;
|
|
85
|
+
}
|
|
86
|
+
setAudience(aud) {
|
|
87
|
+
this.payload[exports.AUDIENCE] = aud;
|
|
88
|
+
return this;
|
|
89
|
+
}
|
|
90
|
+
// End Payload
|
|
91
|
+
getIssuer() {
|
|
92
|
+
return this.payload[exports.ISSUER];
|
|
93
|
+
}
|
|
94
|
+
getAlgorithm() {
|
|
95
|
+
return this.header[exports.ALGORITHM];
|
|
96
|
+
}
|
|
97
|
+
getExpiration() {
|
|
98
|
+
return this.payload[exports.EXPIRES_AT];
|
|
99
|
+
}
|
|
100
|
+
getType() {
|
|
101
|
+
return this.header[exports.TYPE];
|
|
102
|
+
}
|
|
103
|
+
assertAlg(alg) {
|
|
104
|
+
const foundAlg = jws_1.ALGORITHMS.find(a => a === alg);
|
|
105
|
+
if (!foundAlg)
|
|
106
|
+
throw new ts_common_1.BadImplementationException(`Algorithm with name ${alg} is not valid`);
|
|
107
|
+
}
|
|
108
|
+
build(secret) {
|
|
109
|
+
if (!this.getType())
|
|
110
|
+
this.setType(exports.TYP_DEFAULT);
|
|
111
|
+
if (!this.getIssuer())
|
|
112
|
+
// TODO move the config to the module which I need to create
|
|
113
|
+
this.setIssuer(SecretsModule_1.SecretsModule.getIss());
|
|
114
|
+
if (!this.getExpiration())
|
|
115
|
+
throw new ts_common_1.BadImplementationException("Missing expiration, cannot build a valid JWT without this value");
|
|
116
|
+
if (!this.getAlgorithm())
|
|
117
|
+
throw new ts_common_1.BadImplementationException("Missing algorithm, cannot build a valid JWT without this value");
|
|
118
|
+
return jws.sign({ secret, payload: this.payload, header: this.header });
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
exports.JWTBuilder = JWTBuilder;
|
|
122
|
+
//# sourceMappingURL=JWTBuilder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JWTBuilder.js","sourceRoot":"","sources":["../../../src/main/shared/utils/JWTBuilder.ts"],"names":[],"mappings":"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"}
|