@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.
- package/dist/authutilsnode.js +58 -21
- package/dist/authutilsnode.js.map +1 -1
- package/package.json +1 -1
- package/src/authutilsnode.ts +40 -2
- package/types/authutilsnode.d.ts +10 -18
- package/types/authutilsnode.d.ts.map +1 -1
package/dist/authutilsnode.js
CHANGED
|
@@ -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 =
|
|
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
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
}
|
|
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
|
-
|
|
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
|
-
|
|
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":";;;;;;AAAA,gEAAiC;AACjC,kDAAyB;AACzB,gEAA+B;AAC/B,4DAAoC;AACpC,wDAAkC;AAElC,kDAA0B;AAE1B,kDAA6C;AAC7C,MAAM,QAAQ,GAAG,IAAA,oBAAQ,GAAE,CAAA;AAE3B,kDAA+B;AAE/B,gDAA+D;AAE/D,gDAA2D;AAE3D,yDAAgD;AAMhD
|
|
1
|
+
{"version":3,"file":"authutilsnode.js","sourceRoot":"","sources":["../src/authutilsnode.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/authutilsnode.ts
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
234
|
+
scope: scope, // required API
|
|
197
235
|
//@@ remove audience
|
|
198
236
|
//@@ need scope to be the API identifier
|
|
199
237
|
grant_type: "client_credentials"
|
package/types/authutilsnode.d.ts
CHANGED
|
@@ -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
|
-
|
|
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;
|
|
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"}
|