@kwiz/node 1.0.60 → 1.0.62

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.
@@ -1,6 +1,16 @@
1
1
  import { AuthContextType, ITenantInfo } from "@kwiz/common";
2
+ declare global {
3
+ var __kwizMsalTokenCache: Record<string, string> | undefined;
4
+ }
5
+ export type msalCacheHandler = {
6
+ load: () => Promise<string>;
7
+ save: (value: string) => Promise<void>;
8
+ };
2
9
  /** Get app-only token. client secret not supported by SharePoint, must use certificate */
3
- export declare function GetMSALToken(tenantInfo: ITenantInfo, scope: string, auth: AuthContextType, clearCache?: boolean): Promise<string>;
10
+ export declare function GetMSALToken(tenantInfo: ITenantInfo, scope: string, auth: AuthContextType, options?: {
11
+ cache?: msalCacheHandler;
12
+ clearCache?: boolean;
13
+ } | boolean): Promise<string>;
4
14
  export interface iUserTokenAccountInfo {
5
15
  homeAccountId: string;
6
16
  environment: string;
@@ -21,11 +31,16 @@ export interface iUserTokenRequestInfo {
21
31
  state?: string;
22
32
  /** redeem a code from redirect */
23
33
  code?: string;
34
+ /** request a new token silently for account from cache - keep somewhere safe or encrypt */
35
+ account?: iUserTokenAccountInfo;
24
36
  }
25
37
  /** Get user token.
26
38
  * if code or account proivded will attempt to get a token, otherwise will redirect the user
27
39
  * client secret not supported by SharePoint, must use certificate */
28
- export declare function GetMSALUserToken(tenantInfo: ITenantInfo, auth: AuthContextType, info: iUserTokenRequestInfo, clearCache?: boolean): Promise<{
40
+ export declare function GetMSALUserToken(tenantInfo: ITenantInfo, auth: AuthContextType, info: iUserTokenRequestInfo, options?: {
41
+ cache?: msalCacheHandler;
42
+ clearCache?: boolean;
43
+ } | boolean): Promise<{
29
44
  success: true;
30
45
  accessToken: string;
31
46
  account: iUserTokenAccountInfo;
package/dist/auth/msal.js CHANGED
@@ -4,8 +4,6 @@ exports.GetMSALToken = GetMSALToken;
4
4
  exports.GetMSALUserToken = GetMSALUserToken;
5
5
  const msal_node_1 = require("@azure/msal-node");
6
6
  const common_1 = require("@kwiz/common");
7
- //find tenant id? https://login.microsoftonline.com/kwizcom.onmicrosoft.com/.well-known/openid-configuration
8
- //https://stackoverflow.com/questions/54771270/msal-ad-token-not-valid-with-sharepoint-online-csom
9
7
  var _logger;
10
8
  function logger() {
11
9
  if (!_logger)
@@ -13,7 +11,23 @@ function logger() {
13
11
  return _logger;
14
12
  }
15
13
  var apps = {};
16
- function GetApp(tenantInfo, auth) {
14
+ function createCachePlugin(handler) {
15
+ return {
16
+ async beforeCacheAccess(cacheContext) {
17
+ const cacheData = await (0, common_1.promiseCatch)(() => handler.load(), null);
18
+ if (cacheData) {
19
+ cacheContext.tokenCache.deserialize(cacheData);
20
+ }
21
+ },
22
+ async afterCacheAccess(cacheContext) {
23
+ if (!cacheContext.cacheHasChanged) {
24
+ return;
25
+ }
26
+ const cacheData = await (0, common_1.promiseCatch)(() => handler.save(cacheContext.tokenCache.serialize()), null);
27
+ }
28
+ };
29
+ }
30
+ function GetApp(tenantInfo, auth, options) {
17
31
  let key = `${tenantInfo.idOrName}|${auth.authenticationMode}|${auth.clientId}`;
18
32
  if (!apps[key]) {
19
33
  auth.authenticationMode === common_1.AuthenticationModes.clientSecret
@@ -23,6 +37,7 @@ function GetApp(tenantInfo, auth) {
23
37
  authority: tenantInfo.authorityUrl,
24
38
  clientSecret: auth.clientSecret
25
39
  },
40
+ cache: options?.cache ? { cachePlugin: createCachePlugin(options.cache) } : undefined
26
41
  })
27
42
  : apps[key] = new msal_node_1.ConfidentialClientApplication({
28
43
  auth: {
@@ -33,15 +48,17 @@ function GetApp(tenantInfo, auth) {
33
48
  privateKey: auth.privateKey
34
49
  }
35
50
  },
51
+ cache: options?.cache ? { cachePlugin: createCachePlugin(options.cache) } : undefined
36
52
  });
37
53
  }
54
+ if (options?.clearCache)
55
+ apps[key].clearCache();
38
56
  return apps[key];
39
57
  }
40
58
  /** Get app-only token. client secret not supported by SharePoint, must use certificate */
41
- async function GetMSALToken(tenantInfo, scope, auth, clearCache) {
42
- const app = GetApp(tenantInfo, auth);
43
- if (clearCache)
44
- app.clearCache();
59
+ async function GetMSALToken(tenantInfo, scope, auth, options = {}) {
60
+ options = (0, common_1.isBoolean)(options) ? { clearCache: options } : options;
61
+ const app = GetApp(tenantInfo, auth, options);
45
62
  let token = await app.acquireTokenByClientCredential({
46
63
  scopes: [`${scope}/.default`]
47
64
  });
@@ -50,11 +67,28 @@ async function GetMSALToken(tenantInfo, scope, auth, clearCache) {
50
67
  /** Get user token.
51
68
  * if code or account proivded will attempt to get a token, otherwise will redirect the user
52
69
  * client secret not supported by SharePoint, must use certificate */
53
- async function GetMSALUserToken(tenantInfo, auth, info, clearCache) {
54
- const app = GetApp(tenantInfo, auth);
55
- if (clearCache)
56
- app.clearCache();
70
+ async function GetMSALUserToken(tenantInfo, auth, info, options = {}) {
71
+ options = (0, common_1.isBoolean)(options) ? { clearCache: options } : options;
72
+ const app = GetApp(tenantInfo, auth, options);
57
73
  let error;
74
+ if (info.account) {
75
+ try {
76
+ const result = await app.acquireTokenSilent({
77
+ account: info.account,
78
+ scopes: [`${info.scope}/.default`],
79
+ redirectUri: info.redirectUri
80
+ });
81
+ return {
82
+ success: true,
83
+ accessToken: result.accessToken,
84
+ account: result.account
85
+ };
86
+ }
87
+ catch (e) {
88
+ // logger().error(e);
89
+ // error = `Could not get from cache: ${GetError(e)}`;
90
+ }
91
+ }
58
92
  if (info.code) {
59
93
  try {
60
94
  const result = await app.acquireTokenByCode({
@@ -1 +1 @@
1
- {"version":3,"file":"msal.js","sourceRoot":"","sources":["../../src/auth/msal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"msal.js","sourceRoot":"","sources":["../../src/auth/msal.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kwiz/node",
3
- "version": "1.0.60",
3
+ "version": "1.0.62",
4
4
  "description": "KWIZ utilities and helpers for node applications",
5
5
  "module": "dist/index.js",
6
6
  "types": "dist/index.d.ts",