@azure/msal-common 14.4.1-beta.0 → 14.5.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.
Files changed (287) hide show
  1. package/dist/account/AccountInfo.d.ts +58 -31
  2. package/dist/account/AccountInfo.d.ts.map +1 -1
  3. package/dist/account/AccountInfo.mjs +64 -0
  4. package/dist/account/AccountInfo.mjs.map +1 -0
  5. package/dist/account/AuthToken.d.ts +17 -17
  6. package/dist/account/AuthToken.mjs +58 -58
  7. package/dist/account/AuthToken.mjs.map +1 -1
  8. package/dist/account/CcsCredential.d.ts +9 -9
  9. package/dist/account/CcsCredential.mjs +8 -8
  10. package/dist/account/CcsCredential.mjs.map +1 -1
  11. package/dist/account/ClientCredentials.d.ts +14 -14
  12. package/dist/account/ClientInfo.d.ts +18 -19
  13. package/dist/account/ClientInfo.d.ts.map +1 -1
  14. package/dist/account/ClientInfo.mjs +37 -37
  15. package/dist/account/ClientInfo.mjs.map +1 -1
  16. package/dist/account/TokenClaims.d.ts +83 -65
  17. package/dist/account/TokenClaims.d.ts.map +1 -1
  18. package/dist/account/TokenClaims.mjs +25 -0
  19. package/dist/account/TokenClaims.mjs.map +1 -0
  20. package/dist/authority/Authority.d.ts +253 -249
  21. package/dist/authority/Authority.d.ts.map +1 -1
  22. package/dist/authority/Authority.mjs +812 -789
  23. package/dist/authority/Authority.mjs.map +1 -1
  24. package/dist/authority/AuthorityFactory.d.ts +31 -31
  25. package/dist/authority/AuthorityFactory.mjs +47 -47
  26. package/dist/authority/AuthorityFactory.mjs.map +1 -1
  27. package/dist/authority/AuthorityMetadata.d.ts +503 -503
  28. package/dist/authority/AuthorityMetadata.mjs +603 -603
  29. package/dist/authority/AuthorityMetadata.mjs.map +1 -1
  30. package/dist/authority/AuthorityOptions.d.ts +27 -27
  31. package/dist/authority/AuthorityOptions.mjs +18 -18
  32. package/dist/authority/AuthorityOptions.mjs.map +1 -1
  33. package/dist/authority/AuthorityType.d.ts +10 -10
  34. package/dist/authority/AuthorityType.mjs +13 -13
  35. package/dist/authority/AuthorityType.mjs.map +1 -1
  36. package/dist/authority/AzureRegion.d.ts +1 -1
  37. package/dist/authority/AzureRegionConfiguration.d.ts +5 -5
  38. package/dist/authority/CloudDiscoveryMetadata.d.ts +5 -5
  39. package/dist/authority/CloudInstanceDiscoveryErrorResponse.d.ts +13 -13
  40. package/dist/authority/CloudInstanceDiscoveryErrorResponse.mjs +8 -8
  41. package/dist/authority/CloudInstanceDiscoveryErrorResponse.mjs.map +1 -1
  42. package/dist/authority/CloudInstanceDiscoveryResponse.d.ts +9 -9
  43. package/dist/authority/CloudInstanceDiscoveryResponse.mjs +8 -8
  44. package/dist/authority/CloudInstanceDiscoveryResponse.mjs.map +1 -1
  45. package/dist/authority/ImdsOptions.d.ts +5 -5
  46. package/dist/authority/OIDCOptions.d.ts +8 -8
  47. package/dist/authority/OpenIdConfigResponse.d.ts +11 -11
  48. package/dist/authority/OpenIdConfigResponse.mjs +10 -10
  49. package/dist/authority/OpenIdConfigResponse.mjs.map +1 -1
  50. package/dist/authority/ProtocolMode.d.ts +8 -8
  51. package/dist/authority/ProtocolMode.mjs +11 -11
  52. package/dist/authority/ProtocolMode.mjs.map +1 -1
  53. package/dist/authority/RegionDiscovery.d.ts +32 -32
  54. package/dist/authority/RegionDiscovery.mjs +106 -106
  55. package/dist/authority/RegionDiscovery.mjs.map +1 -1
  56. package/dist/authority/RegionDiscoveryMetadata.d.ts +6 -6
  57. package/dist/broker/nativeBroker/INativeBrokerPlugin.d.ts +15 -15
  58. package/dist/cache/CacheManager.d.ts +517 -485
  59. package/dist/cache/CacheManager.d.ts.map +1 -1
  60. package/dist/cache/CacheManager.mjs +1264 -1102
  61. package/dist/cache/CacheManager.mjs.map +1 -1
  62. package/dist/cache/entities/AccessTokenEntity.d.ts +25 -25
  63. package/dist/cache/entities/AccountEntity.d.ts +106 -101
  64. package/dist/cache/entities/AccountEntity.d.ts.map +1 -1
  65. package/dist/cache/entities/AccountEntity.mjs +247 -219
  66. package/dist/cache/entities/AccountEntity.mjs.map +1 -1
  67. package/dist/cache/entities/AppMetadataEntity.d.ts +39 -39
  68. package/dist/cache/entities/AppMetadataEntity.mjs +66 -66
  69. package/dist/cache/entities/AppMetadataEntity.mjs.map +1 -1
  70. package/dist/cache/entities/AuthorityMetadataEntity.d.ts +48 -48
  71. package/dist/cache/entities/AuthorityMetadataEntity.mjs +78 -78
  72. package/dist/cache/entities/AuthorityMetadataEntity.mjs.map +1 -1
  73. package/dist/cache/entities/CacheRecord.d.ts +14 -14
  74. package/dist/cache/entities/CacheRecord.mjs +14 -14
  75. package/dist/cache/entities/CacheRecord.mjs.map +1 -1
  76. package/dist/cache/entities/CredentialEntity.d.ts +30 -30
  77. package/dist/cache/entities/IdTokenEntity.d.ts +8 -8
  78. package/dist/cache/entities/RefreshTokenEntity.d.ts +5 -7
  79. package/dist/cache/entities/RefreshTokenEntity.d.ts.map +1 -1
  80. package/dist/cache/entities/ServerTelemetryEntity.d.ts +5 -5
  81. package/dist/cache/entities/ThrottlingEntity.d.ts +13 -13
  82. package/dist/cache/entities/ThrottlingEntity.mjs +23 -23
  83. package/dist/cache/entities/ThrottlingEntity.mjs.map +1 -1
  84. package/dist/cache/interface/ICacheManager.d.ts +166 -166
  85. package/dist/cache/interface/ICachePlugin.d.ts +5 -5
  86. package/dist/cache/interface/ISerializableTokenCache.d.ts +4 -4
  87. package/dist/cache/persistence/TokenCacheContext.d.ts +23 -23
  88. package/dist/cache/persistence/TokenCacheContext.mjs +25 -25
  89. package/dist/cache/persistence/TokenCacheContext.mjs.map +1 -1
  90. package/dist/cache/utils/CacheHelpers.d.ts +64 -64
  91. package/dist/cache/utils/CacheHelpers.d.ts.map +1 -1
  92. package/dist/cache/utils/CacheHelpers.mjs +231 -234
  93. package/dist/cache/utils/CacheHelpers.mjs.map +1 -1
  94. package/dist/cache/utils/CacheTypes.d.ts +69 -67
  95. package/dist/cache/utils/CacheTypes.d.ts.map +1 -1
  96. package/dist/client/AuthorizationCodeClient.d.ts +74 -74
  97. package/dist/client/AuthorizationCodeClient.d.ts.map +1 -1
  98. package/dist/client/AuthorizationCodeClient.mjs +404 -403
  99. package/dist/client/AuthorizationCodeClient.mjs.map +1 -1
  100. package/dist/client/BaseClient.d.ts +51 -51
  101. package/dist/client/BaseClient.mjs +100 -100
  102. package/dist/client/BaseClient.mjs.map +1 -1
  103. package/dist/client/RefreshTokenClient.d.ts +35 -35
  104. package/dist/client/RefreshTokenClient.d.ts.map +1 -1
  105. package/dist/client/RefreshTokenClient.mjs +189 -194
  106. package/dist/client/RefreshTokenClient.mjs.map +1 -1
  107. package/dist/client/SilentFlowClient.d.ts +27 -27
  108. package/dist/client/SilentFlowClient.mjs +118 -118
  109. package/dist/client/SilentFlowClient.mjs.map +1 -1
  110. package/dist/config/AppTokenProvider.d.ts +38 -38
  111. package/dist/config/ClientConfiguration.d.ts +150 -150
  112. package/dist/config/ClientConfiguration.mjs +97 -97
  113. package/dist/config/ClientConfiguration.mjs.map +1 -1
  114. package/dist/constants/AADServerParamKeys.d.ts +52 -0
  115. package/dist/constants/AADServerParamKeys.d.ts.map +1 -0
  116. package/dist/constants/AADServerParamKeys.mjs +60 -0
  117. package/dist/constants/AADServerParamKeys.mjs.map +1 -0
  118. package/dist/crypto/ICrypto.d.ts +58 -58
  119. package/dist/crypto/ICrypto.mjs +30 -30
  120. package/dist/crypto/ICrypto.mjs.map +1 -1
  121. package/dist/crypto/IGuidGenerator.d.ts +4 -4
  122. package/dist/crypto/JoseHeader.d.ts +22 -22
  123. package/dist/crypto/JoseHeader.mjs +37 -37
  124. package/dist/crypto/JoseHeader.mjs.map +1 -1
  125. package/dist/crypto/PopTokenGenerator.d.ts +60 -60
  126. package/dist/crypto/PopTokenGenerator.mjs +82 -82
  127. package/dist/crypto/PopTokenGenerator.mjs.map +1 -1
  128. package/dist/crypto/SignedHttpRequest.d.ts +15 -15
  129. package/dist/error/AuthError.d.ts +44 -44
  130. package/dist/error/AuthError.mjs +46 -46
  131. package/dist/error/AuthError.mjs.map +1 -1
  132. package/dist/error/AuthErrorCodes.d.ts +5 -5
  133. package/dist/error/AuthErrorCodes.mjs +9 -9
  134. package/dist/error/AuthErrorCodes.mjs.map +1 -1
  135. package/dist/error/ClientAuthError.d.ts +237 -237
  136. package/dist/error/ClientAuthError.mjs +249 -249
  137. package/dist/error/ClientAuthError.mjs.map +1 -1
  138. package/dist/error/ClientAuthErrorCodes.d.ts +44 -44
  139. package/dist/error/ClientAuthErrorCodes.mjs +48 -48
  140. package/dist/error/ClientAuthErrorCodes.mjs.map +1 -1
  141. package/dist/error/ClientConfigurationError.d.ts +128 -128
  142. package/dist/error/ClientConfigurationError.mjs +135 -135
  143. package/dist/error/ClientConfigurationError.mjs.map +1 -1
  144. package/dist/error/ClientConfigurationErrorCodes.d.ts +22 -22
  145. package/dist/error/ClientConfigurationErrorCodes.mjs +26 -26
  146. package/dist/error/ClientConfigurationErrorCodes.mjs.map +1 -1
  147. package/dist/error/InteractionRequiredAuthError.d.ts +57 -57
  148. package/dist/error/InteractionRequiredAuthError.d.ts.map +1 -1
  149. package/dist/error/InteractionRequiredAuthError.mjs +77 -78
  150. package/dist/error/InteractionRequiredAuthError.mjs.map +1 -1
  151. package/dist/error/InteractionRequiredAuthErrorCodes.d.ts +5 -6
  152. package/dist/error/InteractionRequiredAuthErrorCodes.d.ts.map +1 -1
  153. package/dist/error/InteractionRequiredAuthErrorCodes.mjs +12 -13
  154. package/dist/error/InteractionRequiredAuthErrorCodes.mjs.map +1 -1
  155. package/dist/error/JoseHeaderError.d.ts +15 -15
  156. package/dist/error/JoseHeaderError.mjs +22 -22
  157. package/dist/error/JoseHeaderError.mjs.map +1 -1
  158. package/dist/error/JoseHeaderErrorCodes.d.ts +2 -2
  159. package/dist/error/JoseHeaderErrorCodes.mjs +6 -6
  160. package/dist/error/JoseHeaderErrorCodes.mjs.map +1 -1
  161. package/dist/error/ServerError.d.ts +7 -7
  162. package/dist/error/ServerError.mjs +14 -14
  163. package/dist/error/ServerError.mjs.map +1 -1
  164. package/dist/index.cjs +8645 -8295
  165. package/dist/index.cjs.map +1 -1
  166. package/dist/index.d.ts +99 -98
  167. package/dist/index.d.ts.map +1 -1
  168. package/dist/index.mjs +7 -3
  169. package/dist/index.mjs.map +1 -1
  170. package/dist/logger/Logger.d.ts +95 -95
  171. package/dist/logger/Logger.mjs +188 -188
  172. package/dist/logger/Logger.mjs.map +1 -1
  173. package/dist/network/INetworkModule.d.ts +29 -29
  174. package/dist/network/INetworkModule.mjs +12 -12
  175. package/dist/network/INetworkModule.mjs.map +1 -1
  176. package/dist/network/NetworkManager.d.ts +33 -33
  177. package/dist/network/NetworkManager.mjs +34 -34
  178. package/dist/network/NetworkManager.mjs.map +1 -1
  179. package/dist/network/RequestThumbprint.d.ts +18 -18
  180. package/dist/network/ThrottlingUtils.d.ts +42 -42
  181. package/dist/network/ThrottlingUtils.mjs +95 -95
  182. package/dist/network/ThrottlingUtils.mjs.map +1 -1
  183. package/dist/packageMetadata.d.ts +2 -2
  184. package/dist/packageMetadata.mjs +4 -4
  185. package/dist/packageMetadata.mjs.map +1 -1
  186. package/dist/request/AuthenticationHeaderParser.d.ts +19 -19
  187. package/dist/request/AuthenticationHeaderParser.mjs +55 -55
  188. package/dist/request/AuthenticationHeaderParser.mjs.map +1 -1
  189. package/dist/request/BaseAuthRequest.d.ts +43 -43
  190. package/dist/request/CommonAuthorizationCodeRequest.d.ts +27 -27
  191. package/dist/request/CommonAuthorizationUrlRequest.d.ts +50 -50
  192. package/dist/request/CommonClientCredentialRequest.d.ts +17 -17
  193. package/dist/request/CommonDeviceCodeRequest.d.ts +21 -21
  194. package/dist/request/CommonEndSessionRequest.d.ts +21 -21
  195. package/dist/request/CommonOnBehalfOfRequest.d.ts +13 -13
  196. package/dist/request/CommonRefreshTokenRequest.d.ts +22 -23
  197. package/dist/request/CommonRefreshTokenRequest.d.ts.map +1 -1
  198. package/dist/request/CommonSilentFlowRequest.d.ts +20 -21
  199. package/dist/request/CommonSilentFlowRequest.d.ts.map +1 -1
  200. package/dist/request/CommonUsernamePasswordRequest.d.ts +17 -17
  201. package/dist/request/NativeRequest.d.ts +19 -19
  202. package/dist/request/NativeSignOutRequest.d.ts +5 -5
  203. package/dist/request/RequestParameterBuilder.d.ts +217 -217
  204. package/dist/request/RequestParameterBuilder.d.ts.map +1 -1
  205. package/dist/request/RequestParameterBuilder.mjs +383 -382
  206. package/dist/request/RequestParameterBuilder.mjs.map +1 -1
  207. package/dist/request/RequestValidator.d.ts +33 -33
  208. package/dist/request/RequestValidator.mjs +81 -81
  209. package/dist/request/RequestValidator.mjs.map +1 -1
  210. package/dist/request/ScopeSet.d.ts +88 -88
  211. package/dist/request/ScopeSet.mjs +197 -197
  212. package/dist/request/ScopeSet.mjs.map +1 -1
  213. package/dist/request/StoreInCache.d.ts +8 -8
  214. package/dist/response/AuthenticationResult.d.ts +41 -41
  215. package/dist/response/AuthorizationCodePayload.d.ts +13 -13
  216. package/dist/response/DeviceCodeResponse.d.ts +25 -25
  217. package/dist/response/ExternalTokenResponse.d.ts +15 -15
  218. package/dist/response/IMDSBadResponse.d.ts +4 -4
  219. package/dist/response/ResponseHandler.d.ts +69 -67
  220. package/dist/response/ResponseHandler.d.ts.map +1 -1
  221. package/dist/response/ResponseHandler.mjs +339 -313
  222. package/dist/response/ResponseHandler.mjs.map +1 -1
  223. package/dist/response/ServerAuthorizationCodeResponse.d.ts +25 -25
  224. package/dist/response/ServerAuthorizationTokenResponse.d.ts +46 -46
  225. package/dist/telemetry/performance/IPerformanceClient.d.ts +51 -51
  226. package/dist/telemetry/performance/IPerformanceMeasurement.d.ts +5 -5
  227. package/dist/telemetry/performance/PerformanceClient.d.ts +191 -191
  228. package/dist/telemetry/performance/PerformanceClient.mjs +409 -409
  229. package/dist/telemetry/performance/PerformanceClient.mjs.map +1 -1
  230. package/dist/telemetry/performance/PerformanceEvent.d.ts +464 -464
  231. package/dist/telemetry/performance/PerformanceEvent.mjs +253 -253
  232. package/dist/telemetry/performance/PerformanceEvent.mjs.map +1 -1
  233. package/dist/telemetry/performance/StubPerformanceClient.d.ts +24 -24
  234. package/dist/telemetry/performance/StubPerformanceClient.mjs +76 -76
  235. package/dist/telemetry/performance/StubPerformanceClient.mjs.map +1 -1
  236. package/dist/telemetry/server/ServerTelemetryManager.d.ts +66 -66
  237. package/dist/telemetry/server/ServerTelemetryManager.mjs +201 -201
  238. package/dist/telemetry/server/ServerTelemetryManager.mjs.map +1 -1
  239. package/dist/telemetry/server/ServerTelemetryRequest.d.ts +8 -8
  240. package/dist/url/IUri.d.ts +12 -12
  241. package/dist/url/UrlString.d.ts +48 -48
  242. package/dist/url/UrlString.mjs +161 -161
  243. package/dist/url/UrlString.mjs.map +1 -1
  244. package/dist/utils/Constants.d.ts +296 -365
  245. package/dist/utils/Constants.d.ts.map +1 -1
  246. package/dist/utils/Constants.mjs +309 -376
  247. package/dist/utils/Constants.mjs.map +1 -1
  248. package/dist/utils/FunctionWrappers.d.ts +27 -27
  249. package/dist/utils/FunctionWrappers.mjs +84 -84
  250. package/dist/utils/FunctionWrappers.mjs.map +1 -1
  251. package/dist/utils/MsalTypes.d.ts +6 -6
  252. package/dist/utils/ProtocolUtils.d.ts +42 -42
  253. package/dist/utils/ProtocolUtils.mjs +69 -69
  254. package/dist/utils/ProtocolUtils.mjs.map +1 -1
  255. package/dist/utils/StringUtils.d.ts +40 -40
  256. package/dist/utils/StringUtils.mjs +95 -95
  257. package/dist/utils/StringUtils.mjs.map +1 -1
  258. package/dist/utils/TimeUtils.d.ts +27 -27
  259. package/dist/utils/TimeUtils.mjs +45 -45
  260. package/dist/utils/TimeUtils.mjs.map +1 -1
  261. package/dist/utils/UrlUtils.d.ts +10 -10
  262. package/dist/utils/UrlUtils.mjs +44 -44
  263. package/dist/utils/UrlUtils.mjs.map +1 -1
  264. package/package.json +93 -92
  265. package/src/account/AccountInfo.ts +96 -0
  266. package/src/account/ClientInfo.ts +2 -3
  267. package/src/account/TokenClaims.ts +28 -0
  268. package/src/authority/Authority.ts +29 -2
  269. package/src/cache/CacheManager.ts +416 -114
  270. package/src/cache/entities/AccountEntity.ts +84 -33
  271. package/src/cache/entities/RefreshTokenEntity.ts +1 -3
  272. package/src/cache/utils/CacheHelpers.ts +1 -6
  273. package/src/cache/utils/CacheTypes.ts +11 -0
  274. package/src/client/AuthorizationCodeClient.ts +4 -5
  275. package/src/client/RefreshTokenClient.ts +3 -15
  276. package/src/client/SilentFlowClient.ts +1 -1
  277. package/src/constants/AADServerParamKeys.ts +56 -0
  278. package/src/crypto/PopTokenGenerator.ts +1 -1
  279. package/src/error/InteractionRequiredAuthError.ts +0 -2
  280. package/src/error/InteractionRequiredAuthErrorCodes.ts +0 -1
  281. package/src/index.ts +17 -5
  282. package/src/packageMetadata.ts +1 -1
  283. package/src/request/CommonRefreshTokenRequest.ts +0 -1
  284. package/src/request/CommonSilentFlowRequest.ts +0 -1
  285. package/src/request/RequestParameterBuilder.ts +7 -5
  286. package/src/response/ResponseHandler.ts +95 -27
  287. package/src/utils/Constants.ts +0 -72
package/package.json CHANGED
@@ -1,95 +1,96 @@
1
1
  {
2
- "name": "@azure/msal-common",
3
- "author": {
4
- "name": "Microsoft",
5
- "email": "nugetaad@microsoft.com",
6
- "url": "https://www.microsoft.com"
2
+ "name": "@azure/msal-common",
3
+ "author": {
4
+ "name": "Microsoft",
5
+ "email": "nugetaad@microsoft.com",
6
+ "url": "https://www.microsoft.com"
7
+ },
8
+ "license": "MIT",
9
+ "repository": {
10
+ "type": "git",
11
+ "url": "https://github.com/AzureAD/microsoft-authentication-library-for-js.git"
12
+ },
13
+ "version": "14.5.0",
14
+ "description": "Microsoft Authentication Library for js",
15
+ "keywords": [
16
+ "implicit",
17
+ "authorization code",
18
+ "PKCE",
19
+ "js",
20
+ "AAD",
21
+ "msal",
22
+ "oauth"
23
+ ],
24
+ "sideEffects": false,
25
+ "module": "./dist/index.mjs",
26
+ "types": "./dist/index.d.ts",
27
+ "exports": {
28
+ ".": {
29
+ "types": "./dist/index.d.ts",
30
+ "module": "./dist/index.mjs",
31
+ "import": "./dist/index.mjs",
32
+ "require": "./dist/index.cjs",
33
+ "default": "./dist/index.mjs"
7
34
  },
8
- "license": "MIT",
9
- "repository": {
10
- "type": "git",
11
- "url": "https://github.com/AzureAD/microsoft-authentication-library-for-js.git"
12
- },
13
- "version": "14.4.1-beta.0",
14
- "description": "Microsoft Authentication Library for js",
15
- "keywords": [
16
- "implicit",
17
- "authorization code",
18
- "PKCE",
19
- "js",
20
- "AAD",
21
- "msal",
22
- "oauth"
23
- ],
24
- "sideEffects": false,
25
- "module": "./dist/index.mjs",
26
- "types": "./dist/index.d.ts",
27
- "exports": {
28
- ".": {
29
- "types": "./dist/index.d.ts",
30
- "module": "./dist/index.mjs",
31
- "import": "./dist/index.mjs",
32
- "require": "./dist/index.cjs",
33
- "default": "./dist/index.mjs"
34
- },
35
- "./package.json": "./package.json"
36
- },
37
- "engines": {
38
- "node": ">=0.8.0"
39
- },
40
- "directories": {
41
- "test": "test"
42
- },
43
- "files": [
44
- "dist",
45
- "src"
46
- ],
47
- "scripts": {
48
- "clean": "shx rm -rf dist lib",
49
- "clean:coverage": "rimraf ../../.nyc_output/*",
50
- "lint": "eslint src --ext .ts",
51
- "lint:fix": "npm run lint -- --fix",
52
- "test": "jest",
53
- "test:coverage": "jest --coverage",
54
- "test:coverage:only": "npm run clean:coverage && npm run test:coverage",
55
- "build:modules": "rollup -c --strictDeprecations --bundleConfigAsCjs",
56
- "build:modules:watch": "rollup -cw --bundleConfigAsCjs",
57
- "build": "npm run clean && npm run build:modules",
58
- "build:all": "npm run build",
59
- "prepack": "npm run build",
60
- "metadata:check": "ts-node scripts/metadata.ts",
61
- "format:check": "npx prettier --ignore-path .gitignore --check src test",
62
- "format:fix": "npx prettier --ignore-path .gitignore --write src test"
63
- },
64
- "beachball": {
65
- "disallowedChangeTypes": [
66
- "major"
67
- ]
68
- },
69
- "devDependencies": {
70
- "@babel/core": "^7.7.2",
71
- "@babel/plugin-proposal-class-properties": "^7.7.0",
72
- "@babel/plugin-proposal-object-rest-spread": "^7.6.2",
73
- "@babel/preset-env": "^7.7.1",
74
- "@babel/preset-typescript": "^7.7.2",
75
- "@rollup/plugin-typescript": "^11.0.0",
76
- "@types/debug": "^4.1.5",
77
- "@types/jest": "^29.5.0",
78
- "@types/lodash": "^4.14.182",
79
- "@types/node": "^20.3.1",
80
- "@types/sinon": "^7.5.0",
81
- "eslint-config-msal": "^0.0.0",
82
- "jest": "^29.5.0",
83
- "lodash": "^4.17.21",
84
- "prettier": "2.8.7",
85
- "rimraf": "^3.0.2",
86
- "rollup": "^3.14.0",
87
- "shx": "^0.3.2",
88
- "sinon": "^7.5.0",
89
- "ts-jest": "^29.1.0",
90
- "ts-node": "^10.9.1",
91
- "tslib": "^1.10.0",
92
- "typescript": "^4.9.5",
93
- "yargs": "^17.5.1"
94
- }
35
+ "./package.json": "./package.json"
36
+ },
37
+ "engines": {
38
+ "node": ">=0.8.0"
39
+ },
40
+ "directories": {
41
+ "test": "test"
42
+ },
43
+ "files": [
44
+ "dist",
45
+ "src"
46
+ ],
47
+ "scripts": {
48
+ "clean": "shx rm -rf dist lib",
49
+ "clean:coverage": "rimraf ../../.nyc_output/*",
50
+ "lint": "eslint src --ext .ts",
51
+ "lint:fix": "npm run lint -- --fix",
52
+ "test": "jest",
53
+ "test:coverage": "jest --coverage",
54
+ "test:coverage:only": "npm run clean:coverage && npm run test:coverage",
55
+ "build:modules": "rollup -c --strictDeprecations --bundleConfigAsCjs",
56
+ "build:modules:watch": "rollup -cw --bundleConfigAsCjs",
57
+ "build": "npm run clean && npm run build:modules",
58
+ "build:all": "npm run build",
59
+ "prepack": "npm run build",
60
+ "metadata:check": "ts-node scripts/metadata.ts",
61
+ "format:check": "npx prettier --ignore-path .gitignore --check src test",
62
+ "format:fix": "npx prettier --ignore-path .gitignore --write src test"
63
+ },
64
+ "beachball": {
65
+ "disallowedChangeTypes": [
66
+ "major"
67
+ ]
68
+ },
69
+ "devDependencies": {
70
+ "@babel/core": "^7.7.2",
71
+ "@babel/plugin-proposal-class-properties": "^7.7.0",
72
+ "@babel/plugin-proposal-object-rest-spread": "^7.6.2",
73
+ "@babel/preset-env": "^7.7.1",
74
+ "@babel/preset-typescript": "^7.7.2",
75
+ "@rollup/plugin-typescript": "^11.0.0",
76
+ "@types/debug": "^4.1.5",
77
+ "@types/jest": "^29.5.0",
78
+ "@types/lodash": "^4.14.182",
79
+ "@types/node": "^20.3.1",
80
+ "@types/sinon": "^7.5.0",
81
+ "eslint-config-msal": "^0.0.0",
82
+ "msal-test-utils": "^0.0.1",
83
+ "jest": "^29.5.0",
84
+ "lodash": "^4.17.21",
85
+ "prettier": "2.8.7",
86
+ "rimraf": "^3.0.2",
87
+ "rollup": "^3.14.0",
88
+ "shx": "^0.3.2",
89
+ "sinon": "^7.5.0",
90
+ "ts-jest": "^29.1.0",
91
+ "ts-node": "^10.9.1",
92
+ "tslib": "^1.10.0",
93
+ "typescript": "^4.9.5",
94
+ "yargs": "^17.5.1"
95
+ }
95
96
  }
@@ -15,6 +15,7 @@ import { TokenClaims } from "./TokenClaims";
15
15
  * - idToken - raw ID token
16
16
  * - idTokenClaims - Object contains claims from ID token
17
17
  * - nativeAccountId - The user's native account ID
18
+ * - tenantProfiles - Map of tenant profile objects for each tenant that the account has authenticated with in the browser
18
19
  */
19
20
  export type AccountInfo = {
20
21
  homeAccountId: string;
@@ -35,9 +36,104 @@ export type AccountInfo = {
35
36
  };
36
37
  nativeAccountId?: string;
37
38
  authorityType?: string;
39
+ tenantProfiles?: Map<string, TenantProfile>;
40
+ };
41
+
42
+ /**
43
+ * Account details that vary across tenants for the same user
44
+ */
45
+ export type TenantProfile = Pick<
46
+ AccountInfo,
47
+ "tenantId" | "localAccountId" | "name"
48
+ > & {
49
+ /**
50
+ * - isHomeTenant - True if this is the home tenant profile of the account, false if it's a guest tenant profile
51
+ */
52
+ isHomeTenant?: boolean;
38
53
  };
39
54
 
40
55
  export type ActiveAccountFilters = {
41
56
  homeAccountId: string;
42
57
  localAccountId: string;
58
+ tenantId?: string;
43
59
  };
60
+
61
+ /**
62
+ * Returns true if tenantId matches the utid portion of homeAccountId
63
+ * @param tenantId
64
+ * @param homeAccountId
65
+ * @returns
66
+ */
67
+ export function tenantIdMatchesHomeTenant(
68
+ tenantId?: string,
69
+ homeAccountId?: string
70
+ ): boolean {
71
+ return (
72
+ !!tenantId &&
73
+ !!homeAccountId &&
74
+ tenantId === homeAccountId.split(".")[1]
75
+ );
76
+ }
77
+
78
+ export function buildTenantProfileFromIdTokenClaims(
79
+ homeAccountId: string,
80
+ idTokenClaims: TokenClaims
81
+ ): TenantProfile {
82
+ const { oid, sub, tid, name, tfp, acr } = idTokenClaims;
83
+
84
+ /**
85
+ * Since there is no way to determine if the authority is AAD or B2C, we exhaust all the possible claims that can serve as tenant ID with the following precedence:
86
+ * tid - TenantID claim that identifies the tenant that issued the token in AAD. Expected in all AAD ID tokens, not present in B2C ID Tokens.
87
+ * tfp - Trust Framework Policy claim that identifies the policy that was used to authenticate the user. Functions as tenant for B2C scenarios.
88
+ * acr - Authentication Context Class Reference claim used only with older B2C policies. Fallback in case tfp is not present, but likely won't be present anyway.
89
+ */
90
+ const tenantId = tid || tfp || acr || "";
91
+
92
+ return {
93
+ tenantId: tenantId,
94
+ localAccountId: oid || sub || "",
95
+ name: name,
96
+ isHomeTenant: tenantIdMatchesHomeTenant(tenantId, homeAccountId),
97
+ };
98
+ }
99
+
100
+ /**
101
+ * Replaces account info that varies by tenant profile sourced from the ID token claims passed in with the tenant-specific account info
102
+ * @param baseAccountInfo
103
+ * @param idTokenClaims
104
+ * @returns
105
+ */
106
+ export function updateAccountTenantProfileData(
107
+ baseAccountInfo: AccountInfo,
108
+ tenantProfile?: TenantProfile,
109
+ idTokenClaims?: TokenClaims
110
+ ): AccountInfo {
111
+ let updatedAccountInfo = baseAccountInfo;
112
+ // Tenant Profile overrides passed in account info
113
+ if (tenantProfile) {
114
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
115
+ const { isHomeTenant, ...tenantProfileOverride } = tenantProfile;
116
+ updatedAccountInfo = { ...baseAccountInfo, ...tenantProfileOverride };
117
+ }
118
+
119
+ // ID token claims override passed in account info and tenant profile
120
+ if (idTokenClaims) {
121
+ // Ignore isHomeTenant, loginHint, and sid which are part of tenant profile but not base account info
122
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
123
+ const { isHomeTenant, ...claimsSourcedTenantProfile } =
124
+ buildTenantProfileFromIdTokenClaims(
125
+ baseAccountInfo.homeAccountId,
126
+ idTokenClaims
127
+ );
128
+
129
+ updatedAccountInfo = {
130
+ ...updatedAccountInfo,
131
+ ...claimsSourcedTenantProfile,
132
+ idTokenClaims: idTokenClaims,
133
+ };
134
+
135
+ return updatedAccountInfo;
136
+ }
137
+
138
+ return updatedAccountInfo;
139
+ }
@@ -7,7 +7,6 @@ import {
7
7
  createClientAuthError,
8
8
  ClientAuthErrorCodes,
9
9
  } from "../error/ClientAuthError";
10
- import { ICrypto } from "../crypto/ICrypto";
11
10
  import { Separators, Constants } from "../utils/Constants";
12
11
 
13
12
  /**
@@ -25,14 +24,14 @@ export type ClientInfo = {
25
24
  */
26
25
  export function buildClientInfo(
27
26
  rawClientInfo: string,
28
- crypto: ICrypto
27
+ base64Decode: (input: string) => string
29
28
  ): ClientInfo {
30
29
  if (!rawClientInfo) {
31
30
  throw createClientAuthError(ClientAuthErrorCodes.clientInfoEmptyError);
32
31
  }
33
32
 
34
33
  try {
35
- const decodedClientInfo: string = crypto.base64Decode(rawClientInfo);
34
+ const decodedClientInfo: string = base64Decode(rawClientInfo);
36
35
  return JSON.parse(decodedClientInfo) as ClientInfo;
37
36
  } catch (e) {
38
37
  throw createClientAuthError(
@@ -35,6 +35,14 @@ export type TokenClaims = {
35
35
  * Users' tenant or '9188040d-6c67-4c5b-b112-36a304b66dad' for personal accounts.
36
36
  */
37
37
  tid?: string;
38
+ /**
39
+ * Trusted Framework Policy (B2C) The name of the policy that was used to acquire the ID token.
40
+ */
41
+ tfp?: string;
42
+ /**
43
+ * Authentication Context Class Reference (B2C) Used only with older policies.
44
+ */
45
+ acr?: string;
38
46
  ver?: string;
39
47
  upn?: string;
40
48
  preferred_username?: string;
@@ -68,3 +76,23 @@ export type TokenClaims = {
68
76
  tenant_region_scope?: string;
69
77
  tenant_region_sub_scope?: string;
70
78
  };
79
+
80
+ /**
81
+ * Gets tenantId from available ID token claims to set as credential realm with the following precedence:
82
+ * 1. tid - if the token is acquired from an Azure AD tenant tid will be present
83
+ * 2. tfp - if the token is acquired from a modern B2C tenant tfp should be present
84
+ * 3. acr - if the token is acquired from a legacy B2C tenant acr should be present
85
+ * Downcased to match the realm case-insensitive comparison requirements
86
+ * @param idTokenClaims
87
+ * @returns
88
+ */
89
+ export function getTenantIdFromIdTokenClaims(
90
+ idTokenClaims?: TokenClaims
91
+ ): string | null {
92
+ if (idTokenClaims) {
93
+ const tenantId =
94
+ idTokenClaims.tid || idTokenClaims.tfp || idTokenClaims.acr;
95
+ return tenantId || null;
96
+ }
97
+ return null;
98
+ }
@@ -1066,12 +1066,12 @@ export class Authority {
1066
1066
  const matches = this.authorityOptions.knownAuthorities.filter(
1067
1067
  (authority) => {
1068
1068
  return (
1069
+ authority &&
1069
1070
  UrlString.getDomainFromUrl(authority).toLowerCase() ===
1070
- this.hostnameAndPort
1071
+ this.hostnameAndPort
1071
1072
  );
1072
1073
  }
1073
1074
  );
1074
-
1075
1075
  return matches.length > 0;
1076
1076
  }
1077
1077
 
@@ -1253,6 +1253,33 @@ export class Authority {
1253
1253
  }
1254
1254
  }
1255
1255
 
1256
+ /**
1257
+ * Extract tenantId from authority
1258
+ */
1259
+ export function getTenantFromAuthorityString(
1260
+ authority: string
1261
+ ): string | undefined {
1262
+ const authorityUrl = new UrlString(authority);
1263
+ const authorityUrlComponents = authorityUrl.getUrlComponents();
1264
+ /**
1265
+ * For credential matching purposes, tenantId is the last path segment of the authority URL:
1266
+ * AAD Authority - domain/tenantId -> Credentials are cached with realm = tenantId
1267
+ * B2C Authority - domain/{tenantId}?/.../policy -> Credentials are cached with realm = policy
1268
+ * tenantId is downcased because B2C policies can have mixed case but tfp claim is downcased
1269
+ */
1270
+ const tenantId =
1271
+ authorityUrlComponents.PathSegments.slice(-1)[0].toLowerCase();
1272
+
1273
+ switch (tenantId) {
1274
+ case AADAuthorityConstants.COMMON:
1275
+ case AADAuthorityConstants.ORGANIZATIONS:
1276
+ case AADAuthorityConstants.CONSUMERS:
1277
+ return undefined;
1278
+ default:
1279
+ return tenantId;
1280
+ }
1281
+ }
1282
+
1256
1283
  export function formatAuthorityUri(authorityUri: string): string {
1257
1284
  return authorityUri.endsWith(Constants.FORWARD_SLASH)
1258
1285
  ? authorityUri