@nsshunt/stsappframework 2.19.261 → 2.19.263

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.
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.AuthUtilsNode = exports.STSClientID = void 0;
6
+ exports.AuthUtilsNode = void 0;
7
7
  const tough_cookie_1 = __importDefault(require("tough-cookie"));
8
8
  const https_1 = __importDefault(require("https"));
9
9
  const jsonwebtoken_1 = __importDefault(require("jsonwebtoken"));
@@ -16,28 +16,31 @@ const debug_1 = __importDefault(require("debug"));
16
16
  const stsutils_1 = require("@nsshunt/stsutils");
17
17
  const errors_1 = require("./validation/errors");
18
18
  const http_status_codes_1 = require("http-status-codes");
19
- var STSClientID;
20
- (function (STSClientID) {
21
- STSClientID["STSRest01Service"] = "KgSyRECcvnJwwOZqf7GPqUw508sx7VBFEbDC0iP4oeY=";
22
- STSClientID["STSAuthService"] = "q6a9F0kksXDDcrsCUKRwHKDnTNh7yZfxCShAgIJqfGg=";
23
- STSClientID["STSUITerminal"] = "U0E4c4cuRKlBsGo7OhOl3qTkoNGFBXjORUS/T4R4xyA=";
24
- STSClientID["STSCLI"] = "EcCpnQOIQFizAnWphlFJ4tSylosgVnwKTSNtgwuL2tw=";
25
- STSClientID["STSUIWebApp"] = "lww8Je8n2P0OI/KEfJ+4p/bqsk8uE/noeq13tl4zlQ0=";
26
- STSClientID["XXSTSUserAgentRunnerX"] = "y1h2nNr1BzTVPIzNmP/f041uxbnyZYTJeF/5GcwRCtw=";
27
- STSClientID["STSInstrumentManagerService"] = "l8u2E912eR44ZYRHUkSBCCnDOXxQqYOPahDVQzYowrw=";
28
- STSClientID["STSTestOrchestratorService"] = "CU1sVlS6vsEe3O3VvNzKFdBnQd9pQ83w9RyVx/7tJfc=";
29
- STSClientID["STSTestRunnerNode"] = "aX9dJbsT06V1G4j06xEIQ/rZ2CDlpzggU58aLtZ8fzE=";
30
- STSClientID["STSBrokerService"] = "TRppBuvxcjL7jrY9lCASJ5st8JpU8WlhAUAWoX/KKQ4=";
31
- STSClientID["STSTestingService"] = "4Mtb3ABdSzZvSz4T51HPJhT14znVnqVDRFiZsvDNAOg=";
32
- STSClientID["XXSTSAuthenticateSPAXX"] = "v4qBrds3Autl/i86xT+5z0K53kJ/2hHTfxNo0QO/0Jk=";
33
- STSClientID["STSTestRunnerAgentSPA"] = "yDbklCH3awzDNuHICuco9mjDqhdzCa8m7w/UE9Opexc=";
34
- STSClientID["STSClientApp01SPA"] = "FDX/CPyDb3m6d9G2k+wDX8Uvey+yCkllaT4EuEt4QyU=";
35
- STSClientID["PowerPlatformCustomConnectorSPA"] = "fcdcebb5-d154-4699-b99d-87d29e5e148f";
36
- })(STSClientID || (exports.STSClientID = STSClientID = {}));
19
+ /*
20
+ export enum STSClientID {
21
+ STSRest01Service = 'KgSyRECcvnJwwOZqf7GPqUw508sx7VBFEbDC0iP4oeY=',
22
+ STSAuthService = 'q6a9F0kksXDDcrsCUKRwHKDnTNh7yZfxCShAgIJqfGg=',
23
+ STSUITerminal = 'U0E4c4cuRKlBsGo7OhOl3qTkoNGFBXjORUS/T4R4xyA=',
24
+ STSCLI = 'EcCpnQOIQFizAnWphlFJ4tSylosgVnwKTSNtgwuL2tw=',
25
+ STSUIWebApp = 'lww8Je8n2P0OI/KEfJ+4p/bqsk8uE/noeq13tl4zlQ0=',
26
+ XXSTSUserAgentRunnerX = 'y1h2nNr1BzTVPIzNmP/f041uxbnyZYTJeF/5GcwRCtw=',
27
+ STSInstrumentManagerService = 'l8u2E912eR44ZYRHUkSBCCnDOXxQqYOPahDVQzYowrw=',
28
+ STSTestOrchestratorService = 'CU1sVlS6vsEe3O3VvNzKFdBnQd9pQ83w9RyVx/7tJfc=',
29
+ STSTestRunnerNode = 'aX9dJbsT06V1G4j06xEIQ/rZ2CDlpzggU58aLtZ8fzE=',
30
+ STSBrokerService = 'TRppBuvxcjL7jrY9lCASJ5st8JpU8WlhAUAWoX/KKQ4=',
31
+ STSTestingService = '4Mtb3ABdSzZvSz4T51HPJhT14znVnqVDRFiZsvDNAOg=',
32
+ XXSTSAuthenticateSPAXX = 'v4qBrds3Autl/i86xT+5z0K53kJ/2hHTfxNo0QO/0Jk=',
33
+ STSTestRunnerAgentSPA = 'yDbklCH3awzDNuHICuco9mjDqhdzCa8m7w/UE9Opexc=',
34
+ STSClientApp01SPA = 'FDX/CPyDb3m6d9G2k+wDX8Uvey+yCkllaT4EuEt4QyU=',
35
+ PowerPlatformCustomConnectorSPA = 'fcdcebb5-d154-4699-b99d-87d29e5e148f'
36
+ }
37
+ */
37
38
  class AuthUtilsNode {
38
39
  #cookiejar;
39
40
  #httpsAgent = null;
40
41
  #debug = (0, debug_1.default)(`proc:${process.pid}:AuthUtilsNode`);
42
+ // Regular expression to match the origin
43
+ #originRegex = /^(api:\/\/\w+)/;
41
44
  constructor() {
42
45
  this.#cookiejar = new tough_cookie_1.default.CookieJar();
43
46
  }
@@ -163,14 +166,48 @@ class AuthUtilsNode {
163
166
  };
164
167
  return jsonwebtoken_1.default.verify(token, signingKey, verifyOptions);
165
168
  };
166
- GetAPITokenFromAuthServer = async (clientId, authClientSecret, audience, endPoint) => {
169
+ // Function to extract the origin from a URI
170
+ ExtractOrigin = (uri) => {
171
+ const match = uri.match(this.#originRegex);
172
+ return match ? match[1] : null;
173
+ };
174
+ /**
175
+ *
176
+ * @param clientId
177
+ * @param authClientSecret
178
+ * @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.
179
+ * @param endPoint
180
+ * @returns
181
+ */
182
+ GetAPITokenFromAuthServerUsingScope = async (clientId, authClientSecret, scope, endPoint) => {
167
183
  try {
184
+ const scopes = scope.split(' ');
185
+ let origin = null;
186
+ scopes.forEach((s) => {
187
+ if (!origin) {
188
+ origin = this.ExtractOrigin(s);
189
+ if (!origin) {
190
+ throw new Error(`Scope: [${scope}] not in required format. Must use (space seperated) api://<client id>[/<resource>.<permission>].`);
191
+ }
192
+ }
193
+ else {
194
+ const nextOrigin = this.ExtractOrigin(s);
195
+ if (!nextOrigin) {
196
+ throw new Error(`Scope: [${scope}] not in required format. Must use (space seperated) api://<client id>[/<resource>.<permission>].`);
197
+ }
198
+ else {
199
+ if (origin.localeCompare(nextOrigin) !== 0) {
200
+ throw new Error(`Scope: [${scope}] not all from the same client API. All scopes must come from the same client API.`);
201
+ }
202
+ }
203
+ }
204
+ });
168
205
  const headers = { 'Content-Type': 'application/json' };
169
206
  const payload = {
170
207
  client_id: clientId,
171
208
  client_secret: authClientSecret,
172
209
  //client_secret: goptions.brokerclientsecret, // Broker service client secret
173
- audience: audience,
210
+ scope: scope,
174
211
  //@@ remove audience
175
212
  //@@ need scope to be the API identifier
176
213
  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.261",
3
+ "version": "2.19.263",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "./types/index.d.ts",
@@ -21,6 +21,7 @@ export interface IAuthUtilsNodeOptions {
21
21
  permissions: string[]
22
22
  }
23
23
 
24
+ /*
24
25
  export enum STSClientID {
25
26
  STSRest01Service = 'KgSyRECcvnJwwOZqf7GPqUw508sx7VBFEbDC0iP4oeY=',
26
27
  STSAuthService = 'q6a9F0kksXDDcrsCUKRwHKDnTNh7yZfxCShAgIJqfGg=',
@@ -38,12 +39,15 @@ export enum STSClientID {
38
39
  STSClientApp01SPA = 'FDX/CPyDb3m6d9G2k+wDX8Uvey+yCkllaT4EuEt4QyU=',
39
40
  PowerPlatformCustomConnectorSPA = 'fcdcebb5-d154-4699-b99d-87d29e5e148f'
40
41
  }
42
+ */
41
43
 
42
44
  export class AuthUtilsNode
43
45
  {
44
46
  #cookiejar: tough.CookieJar;
45
47
  #httpsAgent: https.Agent | null = null;
46
48
  #debug = debugModule(`proc:${process.pid}:AuthUtilsNode`);
49
+ // Regular expression to match the origin
50
+ #originRegex = /^(api:\/\/\w+)/;
47
51
 
48
52
  constructor() {
49
53
  this.#cookiejar = new tough.CookieJar();
@@ -186,14 +190,48 @@ export class AuthUtilsNode
186
190
  return jwt.verify(token, signingKey, verifyOptions) as string;
187
191
  }
188
192
 
189
- GetAPITokenFromAuthServer = async (clientId: STSClientID, authClientSecret: string, audience: string, endPoint?: string): Promise<string> => {
193
+ // Function to extract the origin from a URI
194
+ ExtractOrigin = (uri: string) => {
195
+ const match = uri.match(this.#originRegex);
196
+ return match ? match[1] : null;
197
+ }
198
+
199
+ /**
200
+ *
201
+ * @param clientId
202
+ * @param authClientSecret
203
+ * @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.
204
+ * @param endPoint
205
+ * @returns
206
+ */
207
+ GetAPITokenFromAuthServerUsingScope = async (clientId: string, authClientSecret: string, scope: string, endPoint?: string): Promise<string> => {
190
208
  try {
209
+ const scopes = scope.split(' ');
210
+ let origin: string | null = null;
211
+ scopes.forEach((s) => {
212
+ if (!origin) {
213
+ origin = this.ExtractOrigin(s);
214
+ if (!origin) {
215
+ throw new Error(`Scope: [${scope}] not in required format. Must use (space seperated) api://<client id>[/<resource>.<permission>].`);
216
+ }
217
+ } else {
218
+ const nextOrigin: string | null = this.ExtractOrigin(s);
219
+ if (!nextOrigin) {
220
+ throw new Error(`Scope: [${scope}] not in required format. Must use (space seperated) api://<client id>[/<resource>.<permission>].`);
221
+ } else {
222
+ if (origin.localeCompare(nextOrigin) !== 0) {
223
+ throw new Error(`Scope: [${scope}] not all from the same client API. All scopes must come from the same client API.`);
224
+ }
225
+ }
226
+ }
227
+ });
228
+
191
229
  const headers = { 'Content-Type': 'application/json'};
192
230
  const payload = { //@@ make a type
193
231
  client_id: clientId, // The service calling this method
194
232
  client_secret: authClientSecret, // Auth service client secret
195
233
  //client_secret: goptions.brokerclientsecret, // Broker service client secret
196
- audience: audience, // required API
234
+ scope: scope, // required API
197
235
  //@@ remove audience
198
236
  //@@ need scope to be the API identifier
199
237
  grant_type: "client_credentials"
@@ -2,23 +2,6 @@ import tough from 'tough-cookie';
2
2
  export interface IAuthUtilsNodeOptions {
3
3
  permissions: string[];
4
4
  }
5
- export declare enum STSClientID {
6
- STSRest01Service = "KgSyRECcvnJwwOZqf7GPqUw508sx7VBFEbDC0iP4oeY=",
7
- STSAuthService = "q6a9F0kksXDDcrsCUKRwHKDnTNh7yZfxCShAgIJqfGg=",
8
- STSUITerminal = "U0E4c4cuRKlBsGo7OhOl3qTkoNGFBXjORUS/T4R4xyA=",
9
- STSCLI = "EcCpnQOIQFizAnWphlFJ4tSylosgVnwKTSNtgwuL2tw=",
10
- STSUIWebApp = "lww8Je8n2P0OI/KEfJ+4p/bqsk8uE/noeq13tl4zlQ0=",
11
- XXSTSUserAgentRunnerX = "y1h2nNr1BzTVPIzNmP/f041uxbnyZYTJeF/5GcwRCtw=",
12
- STSInstrumentManagerService = "l8u2E912eR44ZYRHUkSBCCnDOXxQqYOPahDVQzYowrw=",
13
- STSTestOrchestratorService = "CU1sVlS6vsEe3O3VvNzKFdBnQd9pQ83w9RyVx/7tJfc=",
14
- STSTestRunnerNode = "aX9dJbsT06V1G4j06xEIQ/rZ2CDlpzggU58aLtZ8fzE=",
15
- STSBrokerService = "TRppBuvxcjL7jrY9lCASJ5st8JpU8WlhAUAWoX/KKQ4=",
16
- STSTestingService = "4Mtb3ABdSzZvSz4T51HPJhT14znVnqVDRFiZsvDNAOg=",
17
- XXSTSAuthenticateSPAXX = "v4qBrds3Autl/i86xT+5z0K53kJ/2hHTfxNo0QO/0Jk=",
18
- STSTestRunnerAgentSPA = "yDbklCH3awzDNuHICuco9mjDqhdzCa8m7w/UE9Opexc=",
19
- STSClientApp01SPA = "FDX/CPyDb3m6d9G2k+wDX8Uvey+yCkllaT4EuEt4QyU=",
20
- PowerPlatformCustomConnectorSPA = "fcdcebb5-d154-4699-b99d-87d29e5e148f"
21
- }
22
5
  export declare class AuthUtilsNode {
23
6
  #private;
24
7
  constructor();
@@ -27,6 +10,15 @@ export declare class AuthUtilsNode {
27
10
  SetCookiesToJar: (headers: Record<string, any>, endpoint: string) => Promise<tough.Cookie[]>;
28
11
  GetCookiesFromJar: (endpoint: string) => Promise<tough.Cookie[]>;
29
12
  ValidateJWT: (token: string, audience: string, endpoint?: string) => Promise<string>;
30
- GetAPITokenFromAuthServer: (clientId: STSClientID, authClientSecret: string, audience: string, endPoint?: string) => Promise<string>;
13
+ ExtractOrigin: (uri: string) => string | null;
14
+ /**
15
+ *
16
+ * @param clientId
17
+ * @param authClientSecret
18
+ * @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.
19
+ * @param endPoint
20
+ * @returns
21
+ */
22
+ GetAPITokenFromAuthServerUsingScope: (clientId: string, authClientSecret: string, scope: string, endPoint?: string) => Promise<string>;
31
23
  }
32
24
  //# 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;AAsBD,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,MAAM,oBAAoB,MAAM,SAAS,MAAM,aAAa,MAAM,KAAG,QAAQ,MAAM,CAAC,CA0E1I;CA4FJ"}