@nsshunt/stsappframework 2.19.260 → 2.19.262

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.
@@ -38,6 +38,8 @@ class AuthUtilsNode {
38
38
  #cookiejar;
39
39
  #httpsAgent = null;
40
40
  #debug = (0, debug_1.default)(`proc:${process.pid}:AuthUtilsNode`);
41
+ // Regular expression to match the origin
42
+ #originRegex = /^(api:\/\/\w+)/;
41
43
  constructor() {
42
44
  this.#cookiejar = new tough_cookie_1.default.CookieJar();
43
45
  }
@@ -163,14 +165,48 @@ class AuthUtilsNode {
163
165
  };
164
166
  return jsonwebtoken_1.default.verify(token, signingKey, verifyOptions);
165
167
  };
166
- GetAPITokenFromAuthServer = async (clientId, authClientSecret, audience, endPoint) => {
168
+ // Function to extract the origin from a URI
169
+ ExtractOrigin = (uri) => {
170
+ const match = uri.match(this.#originRegex);
171
+ return match ? match[1] : null;
172
+ };
173
+ /**
174
+ *
175
+ * @param clientId
176
+ * @param authClientSecret
177
+ * @param scope space seperate list of fully qualifed required scopes (i.e. api://<<api id>>/<<resource>>.<<permission>>). Note the scopes must all be for the same client api.
178
+ * @param endPoint
179
+ * @returns
180
+ */
181
+ GetAPITokenFromAuthServerUsingScope = async (clientId, authClientSecret, scope, endPoint) => {
167
182
  try {
183
+ const scopes = scope.split(' ');
184
+ let origin = null;
185
+ scopes.forEach((s) => {
186
+ if (!origin) {
187
+ origin = this.ExtractOrigin(s);
188
+ if (!origin) {
189
+ throw new Error(`Scope: [${scope}] not in required format. Must use (space seperated) api://<client id>[/<resource>.<permission>].`);
190
+ }
191
+ }
192
+ else {
193
+ const nextOrigin = this.ExtractOrigin(s);
194
+ if (!nextOrigin) {
195
+ throw new Error(`Scope: [${scope}] not in required format. Must use (space seperated) api://<client id>[/<resource>.<permission>].`);
196
+ }
197
+ else {
198
+ if (origin.localeCompare(nextOrigin) !== 0) {
199
+ throw new Error(`Scope: [${scope}] not all from the same client API. All scopes must come from the same client API.`);
200
+ }
201
+ }
202
+ }
203
+ });
168
204
  const headers = { 'Content-Type': 'application/json' };
169
205
  const payload = {
170
206
  client_id: clientId,
171
207
  client_secret: authClientSecret,
172
208
  //client_secret: goptions.brokerclientsecret, // Broker service client secret
173
- audience: audience,
209
+ scope: scope,
174
210
  //@@ remove audience
175
211
  //@@ need scope to be the API identifier
176
212
  grant_type: "client_credentials"
@@ -1 +1 @@
1
- {"version":3,"file":"authutilsnode.js","sourceRoot":"","sources":["../src/authutilsnode.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"authutilsnode.js","sourceRoot":"","sources":["../src/authutilsnode.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nsshunt/stsappframework",
3
- "version": "2.19.260",
3
+ "version": "2.19.262",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "./types/index.d.ts",
@@ -33,25 +33,25 @@
33
33
  "@types/express": "^4.17.17",
34
34
  "@types/jest": "^29.5.3",
35
35
  "@types/jsonwebtoken": "^9.0.2",
36
- "@types/lodash": "^4.14.195",
36
+ "@types/lodash": "^4.14.196",
37
37
  "@types/pg": "^8.10.2",
38
38
  "@types/uuid": "^9.0.2",
39
- "@typescript-eslint/eslint-plugin": "^6.1.0",
40
- "@typescript-eslint/parser": "^6.1.0",
41
- "@vitest/ui": "^0.33.0",
42
- "eslint": "^8.45.0",
43
- "jest": "^29.6.1",
39
+ "@typescript-eslint/eslint-plugin": "^6.2.1",
40
+ "@typescript-eslint/parser": "^6.2.1",
41
+ "@vitest/ui": "^0.34.1",
42
+ "eslint": "^8.46.0",
43
+ "jest": "^29.6.2",
44
44
  "supertest": "^6.3.3",
45
- "testcontainers": "^9.11.0",
45
+ "testcontainers": "^10.0.1",
46
46
  "typescript": "^5.1.6"
47
47
  },
48
48
  "dependencies": {
49
- "@nsshunt/stsconfig": "^1.25.50",
50
- "@nsshunt/stsdatamanagement": "^1.17.122",
51
- "@nsshunt/stsinstrumentation": "^6.11.89",
52
- "@nsshunt/stspublisherserver": "^1.15.89",
53
- "@nsshunt/stssocketio-client": "^0.0.21",
54
- "@nsshunt/stsutils": "^1.16.8",
49
+ "@nsshunt/stsconfig": "^1.25.53",
50
+ "@nsshunt/stsdatamanagement": "^1.17.123",
51
+ "@nsshunt/stsinstrumentation": "^6.11.93",
52
+ "@nsshunt/stspublisherserver": "^1.15.90",
53
+ "@nsshunt/stssocketio-client": "^0.0.22",
54
+ "@nsshunt/stsutils": "^1.16.9",
55
55
  "@socket.io/cluster-adapter": "^0.2.2",
56
56
  "@socket.io/redis-streams-adapter": "^0.1.0",
57
57
  "@types/pidusage": "^2.0.2",
@@ -71,11 +71,11 @@
71
71
  "pidusage": "^3.0.2",
72
72
  "prom-client": "^14.2.0",
73
73
  "redis": "^4.6.7",
74
- "socket.io": "^4.7.1",
75
- "socket.io-client": "^4.7.1",
76
- "systeminformation": "^5.18.7",
74
+ "socket.io": "^4.7.2",
75
+ "socket.io-client": "^4.7.2",
76
+ "systeminformation": "^5.18.10",
77
77
  "tough-cookie": "^4.1.3",
78
78
  "uuid": "^9.0.0",
79
- "vitest": "^0.33.0"
79
+ "vitest": "^0.34.1"
80
80
  }
81
81
  }
@@ -44,6 +44,8 @@ export class AuthUtilsNode
44
44
  #cookiejar: tough.CookieJar;
45
45
  #httpsAgent: https.Agent | null = null;
46
46
  #debug = debugModule(`proc:${process.pid}:AuthUtilsNode`);
47
+ // Regular expression to match the origin
48
+ #originRegex = /^(api:\/\/\w+)/;
47
49
 
48
50
  constructor() {
49
51
  this.#cookiejar = new tough.CookieJar();
@@ -186,14 +188,48 @@ export class AuthUtilsNode
186
188
  return jwt.verify(token, signingKey, verifyOptions) as string;
187
189
  }
188
190
 
189
- GetAPITokenFromAuthServer = async (clientId: STSClientID, authClientSecret: string, audience: string, endPoint?: string): Promise<string> => {
191
+ // Function to extract the origin from a URI
192
+ ExtractOrigin = (uri: string) => {
193
+ const match = uri.match(this.#originRegex);
194
+ return match ? match[1] : null;
195
+ }
196
+
197
+ /**
198
+ *
199
+ * @param clientId
200
+ * @param authClientSecret
201
+ * @param scope space seperate list of fully qualifed required scopes (i.e. api://<<api id>>/<<resource>>.<<permission>>). Note the scopes must all be for the same client api.
202
+ * @param endPoint
203
+ * @returns
204
+ */
205
+ GetAPITokenFromAuthServerUsingScope = async (clientId: STSClientID, authClientSecret: string, scope: string, endPoint?: string): Promise<string> => {
190
206
  try {
207
+ const scopes = scope.split(' ');
208
+ let origin: string | null = null;
209
+ scopes.forEach((s) => {
210
+ if (!origin) {
211
+ origin = this.ExtractOrigin(s);
212
+ if (!origin) {
213
+ throw new Error(`Scope: [${scope}] not in required format. Must use (space seperated) api://<client id>[/<resource>.<permission>].`);
214
+ }
215
+ } else {
216
+ const nextOrigin: string | null = this.ExtractOrigin(s);
217
+ if (!nextOrigin) {
218
+ throw new Error(`Scope: [${scope}] not in required format. Must use (space seperated) api://<client id>[/<resource>.<permission>].`);
219
+ } else {
220
+ if (origin.localeCompare(nextOrigin) !== 0) {
221
+ throw new Error(`Scope: [${scope}] not all from the same client API. All scopes must come from the same client API.`);
222
+ }
223
+ }
224
+ }
225
+ });
226
+
191
227
  const headers = { 'Content-Type': 'application/json'};
192
228
  const payload = { //@@ make a type
193
229
  client_id: clientId, // The service calling this method
194
230
  client_secret: authClientSecret, // Auth service client secret
195
231
  //client_secret: goptions.brokerclientsecret, // Broker service client secret
196
- audience: audience, // required API
232
+ scope: scope, // required API
197
233
  //@@ remove audience
198
234
  //@@ need scope to be the API identifier
199
235
  grant_type: "client_credentials"
@@ -27,6 +27,15 @@ export declare class AuthUtilsNode {
27
27
  SetCookiesToJar: (headers: Record<string, any>, endpoint: string) => Promise<tough.Cookie[]>;
28
28
  GetCookiesFromJar: (endpoint: string) => Promise<tough.Cookie[]>;
29
29
  ValidateJWT: (token: string, audience: string, endpoint?: string) => Promise<string>;
30
- GetAPITokenFromAuthServer: (clientId: STSClientID, authClientSecret: string, audience: string, endPoint?: string) => Promise<string>;
30
+ ExtractOrigin: (uri: string) => string | null;
31
+ /**
32
+ *
33
+ * @param clientId
34
+ * @param authClientSecret
35
+ * @param scope space seperate list of fully qualifed required scopes (i.e. api://<<api id>>/<<resource>>.<<permission>>). Note the scopes must all be for the same client api.
36
+ * @param endPoint
37
+ * @returns
38
+ */
39
+ GetAPITokenFromAuthServerUsingScope: (clientId: STSClientID, authClientSecret: string, scope: string, endPoint?: string) => Promise<string>;
31
40
  }
32
41
  //# sourceMappingURL=authutilsnode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"authutilsnode.d.ts","sourceRoot":"","sources":["../src/authutilsnode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,cAAc,CAAC;AAmBjC,MAAM,WAAW,qBAAqB;IAClC,WAAW,EAAE,MAAM,EAAE,CAAA;CACxB;AAED,oBAAY,WAAW;IACnB,gBAAgB,iDAAiD;IACjE,cAAc,iDAAiD;IAC/D,aAAa,iDAAiD;IAC9D,MAAM,iDAAiD;IACvD,WAAW,iDAAiD;IAC5D,qBAAqB,iDAAiD;IACtE,2BAA2B,iDAAiD;IAC5E,0BAA0B,iDAAiD;IAC3E,iBAAiB,iDAAiD;IAClE,gBAAgB,iDAAiD;IACjE,iBAAiB,iDAAiD;IAClE,sBAAsB,iDAAiD;IACvE,qBAAqB,iDAAiD;IACtE,iBAAiB,iDAAiD;IAClE,+BAA+B,yCAAyC;CAC3E;AAED,qBAAa,aAAa;;;IA0BtB,8BAA8B,CAAC,OAAO,EAAE,qBAAqB,SAE9B,GAAG,OAAO,GAAG,QAAQ,GAAG;IAqCjD,uBAAuB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG;IAyB3D,eAAe,YAAmB,OAAO,MAAM,EAAE,GAAG,CAAC,YAAY,MAAM,KAAG,QAAQ,MAAM,MAAM,EAAE,CAAC,CAgB/F;IAEF,iBAAiB,aAAoB,MAAM,KAAG,QAAQ,MAAM,MAAM,EAAE,CAAC,CAGnE;IAEF,WAAW,UAAiB,MAAM,YAAY,MAAM,aAAa,MAAM,KAAG,QAAQ,MAAM,CAAC,CAgCxF;IAED,yBAAyB,aAAoB,WAAW,oBAAoB,MAAM,YAAY,MAAM,aAAa,MAAM,KAAG,QAAQ,MAAM,CAAC,CAsDxI;CA4FJ"}
1
+ {"version":3,"file":"authutilsnode.d.ts","sourceRoot":"","sources":["../src/authutilsnode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,cAAc,CAAC;AAmBjC,MAAM,WAAW,qBAAqB;IAClC,WAAW,EAAE,MAAM,EAAE,CAAA;CACxB;AAED,oBAAY,WAAW;IACnB,gBAAgB,iDAAiD;IACjE,cAAc,iDAAiD;IAC/D,aAAa,iDAAiD;IAC9D,MAAM,iDAAiD;IACvD,WAAW,iDAAiD;IAC5D,qBAAqB,iDAAiD;IACtE,2BAA2B,iDAAiD;IAC5E,0BAA0B,iDAAiD;IAC3E,iBAAiB,iDAAiD;IAClE,gBAAgB,iDAAiD;IACjE,iBAAiB,iDAAiD;IAClE,sBAAsB,iDAAiD;IACvE,qBAAqB,iDAAiD;IACtE,iBAAiB,iDAAiD;IAClE,+BAA+B,yCAAyC;CAC3E;AAED,qBAAa,aAAa;;;IA4BtB,8BAA8B,CAAC,OAAO,EAAE,qBAAqB,SAE9B,GAAG,OAAO,GAAG,QAAQ,GAAG;IAqCjD,uBAAuB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG;IAyB3D,eAAe,YAAmB,OAAO,MAAM,EAAE,GAAG,CAAC,YAAY,MAAM,KAAG,QAAQ,MAAM,MAAM,EAAE,CAAC,CAgB/F;IAEF,iBAAiB,aAAoB,MAAM,KAAG,QAAQ,MAAM,MAAM,EAAE,CAAC,CAGnE;IAEF,WAAW,UAAiB,MAAM,YAAY,MAAM,aAAa,MAAM,KAAG,QAAQ,MAAM,CAAC,CAgCxF;IAGD,aAAa,QAAS,MAAM,mBAG3B;IAED;;;;;;;OAOG;IACH,mCAAmC,aAAoB,WAAW,oBAAoB,MAAM,SAAS,MAAM,aAAa,MAAM,KAAG,QAAQ,MAAM,CAAC,CA0E/I;CA4FJ"}