@azure/msal-common 14.4.1-beta.1 → 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 (288) 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.d.ts.map +1 -1
  185. package/dist/packageMetadata.mjs +4 -4
  186. package/dist/packageMetadata.mjs.map +1 -1
  187. package/dist/request/AuthenticationHeaderParser.d.ts +19 -19
  188. package/dist/request/AuthenticationHeaderParser.mjs +55 -55
  189. package/dist/request/AuthenticationHeaderParser.mjs.map +1 -1
  190. package/dist/request/BaseAuthRequest.d.ts +43 -43
  191. package/dist/request/CommonAuthorizationCodeRequest.d.ts +27 -27
  192. package/dist/request/CommonAuthorizationUrlRequest.d.ts +50 -50
  193. package/dist/request/CommonClientCredentialRequest.d.ts +17 -17
  194. package/dist/request/CommonDeviceCodeRequest.d.ts +21 -21
  195. package/dist/request/CommonEndSessionRequest.d.ts +21 -21
  196. package/dist/request/CommonOnBehalfOfRequest.d.ts +13 -13
  197. package/dist/request/CommonRefreshTokenRequest.d.ts +22 -23
  198. package/dist/request/CommonRefreshTokenRequest.d.ts.map +1 -1
  199. package/dist/request/CommonSilentFlowRequest.d.ts +20 -21
  200. package/dist/request/CommonSilentFlowRequest.d.ts.map +1 -1
  201. package/dist/request/CommonUsernamePasswordRequest.d.ts +17 -17
  202. package/dist/request/NativeRequest.d.ts +19 -19
  203. package/dist/request/NativeSignOutRequest.d.ts +5 -5
  204. package/dist/request/RequestParameterBuilder.d.ts +217 -217
  205. package/dist/request/RequestParameterBuilder.d.ts.map +1 -1
  206. package/dist/request/RequestParameterBuilder.mjs +383 -382
  207. package/dist/request/RequestParameterBuilder.mjs.map +1 -1
  208. package/dist/request/RequestValidator.d.ts +33 -33
  209. package/dist/request/RequestValidator.mjs +81 -81
  210. package/dist/request/RequestValidator.mjs.map +1 -1
  211. package/dist/request/ScopeSet.d.ts +88 -88
  212. package/dist/request/ScopeSet.mjs +197 -197
  213. package/dist/request/ScopeSet.mjs.map +1 -1
  214. package/dist/request/StoreInCache.d.ts +8 -8
  215. package/dist/response/AuthenticationResult.d.ts +41 -41
  216. package/dist/response/AuthorizationCodePayload.d.ts +13 -13
  217. package/dist/response/DeviceCodeResponse.d.ts +25 -25
  218. package/dist/response/ExternalTokenResponse.d.ts +15 -15
  219. package/dist/response/IMDSBadResponse.d.ts +4 -4
  220. package/dist/response/ResponseHandler.d.ts +69 -67
  221. package/dist/response/ResponseHandler.d.ts.map +1 -1
  222. package/dist/response/ResponseHandler.mjs +339 -313
  223. package/dist/response/ResponseHandler.mjs.map +1 -1
  224. package/dist/response/ServerAuthorizationCodeResponse.d.ts +25 -25
  225. package/dist/response/ServerAuthorizationTokenResponse.d.ts +46 -46
  226. package/dist/telemetry/performance/IPerformanceClient.d.ts +51 -51
  227. package/dist/telemetry/performance/IPerformanceMeasurement.d.ts +5 -5
  228. package/dist/telemetry/performance/PerformanceClient.d.ts +191 -191
  229. package/dist/telemetry/performance/PerformanceClient.mjs +409 -409
  230. package/dist/telemetry/performance/PerformanceClient.mjs.map +1 -1
  231. package/dist/telemetry/performance/PerformanceEvent.d.ts +464 -464
  232. package/dist/telemetry/performance/PerformanceEvent.mjs +253 -253
  233. package/dist/telemetry/performance/PerformanceEvent.mjs.map +1 -1
  234. package/dist/telemetry/performance/StubPerformanceClient.d.ts +24 -24
  235. package/dist/telemetry/performance/StubPerformanceClient.mjs +76 -76
  236. package/dist/telemetry/performance/StubPerformanceClient.mjs.map +1 -1
  237. package/dist/telemetry/server/ServerTelemetryManager.d.ts +66 -66
  238. package/dist/telemetry/server/ServerTelemetryManager.mjs +201 -201
  239. package/dist/telemetry/server/ServerTelemetryManager.mjs.map +1 -1
  240. package/dist/telemetry/server/ServerTelemetryRequest.d.ts +8 -8
  241. package/dist/url/IUri.d.ts +12 -12
  242. package/dist/url/UrlString.d.ts +48 -48
  243. package/dist/url/UrlString.mjs +161 -161
  244. package/dist/url/UrlString.mjs.map +1 -1
  245. package/dist/utils/Constants.d.ts +296 -365
  246. package/dist/utils/Constants.d.ts.map +1 -1
  247. package/dist/utils/Constants.mjs +309 -376
  248. package/dist/utils/Constants.mjs.map +1 -1
  249. package/dist/utils/FunctionWrappers.d.ts +27 -27
  250. package/dist/utils/FunctionWrappers.mjs +84 -84
  251. package/dist/utils/FunctionWrappers.mjs.map +1 -1
  252. package/dist/utils/MsalTypes.d.ts +6 -6
  253. package/dist/utils/ProtocolUtils.d.ts +42 -42
  254. package/dist/utils/ProtocolUtils.mjs +69 -69
  255. package/dist/utils/ProtocolUtils.mjs.map +1 -1
  256. package/dist/utils/StringUtils.d.ts +40 -40
  257. package/dist/utils/StringUtils.mjs +95 -95
  258. package/dist/utils/StringUtils.mjs.map +1 -1
  259. package/dist/utils/TimeUtils.d.ts +27 -27
  260. package/dist/utils/TimeUtils.mjs +45 -45
  261. package/dist/utils/TimeUtils.mjs.map +1 -1
  262. package/dist/utils/UrlUtils.d.ts +10 -10
  263. package/dist/utils/UrlUtils.mjs +44 -44
  264. package/dist/utils/UrlUtils.mjs.map +1 -1
  265. package/package.json +93 -92
  266. package/src/account/AccountInfo.ts +96 -0
  267. package/src/account/ClientInfo.ts +2 -3
  268. package/src/account/TokenClaims.ts +28 -0
  269. package/src/authority/Authority.ts +29 -2
  270. package/src/cache/CacheManager.ts +416 -114
  271. package/src/cache/entities/AccountEntity.ts +84 -33
  272. package/src/cache/entities/RefreshTokenEntity.ts +1 -3
  273. package/src/cache/utils/CacheHelpers.ts +1 -6
  274. package/src/cache/utils/CacheTypes.ts +11 -0
  275. package/src/client/AuthorizationCodeClient.ts +4 -5
  276. package/src/client/RefreshTokenClient.ts +3 -15
  277. package/src/client/SilentFlowClient.ts +1 -1
  278. package/src/constants/AADServerParamKeys.ts +56 -0
  279. package/src/crypto/PopTokenGenerator.ts +1 -1
  280. package/src/error/InteractionRequiredAuthError.ts +0 -2
  281. package/src/error/InteractionRequiredAuthErrorCodes.ts +0 -1
  282. package/src/index.ts +17 -5
  283. package/src/packageMetadata.ts +1 -1
  284. package/src/request/CommonRefreshTokenRequest.ts +0 -1
  285. package/src/request/CommonSilentFlowRequest.ts +0 -1
  286. package/src/request/RequestParameterBuilder.ts +7 -5
  287. package/src/response/ResponseHandler.ts +95 -27
  288. package/src/utils/Constants.ts +0 -72
@@ -3,18 +3,25 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- import { Separators, CacheAccountType, Constants } from "../../utils/Constants";
6
+ import { CacheAccountType, Separators } from "../../utils/Constants";
7
7
  import { Authority } from "../../authority/Authority";
8
8
  import { ICrypto } from "../../crypto/ICrypto";
9
- import { buildClientInfo } from "../../account/ClientInfo";
10
- import { AccountInfo } from "../../account/AccountInfo";
9
+ import { ClientInfo, buildClientInfo } from "../../account/ClientInfo";
10
+ import {
11
+ AccountInfo,
12
+ TenantProfile,
13
+ buildTenantProfileFromIdTokenClaims,
14
+ } from "../../account/AccountInfo";
11
15
  import {
12
16
  createClientAuthError,
13
17
  ClientAuthErrorCodes,
14
18
  } from "../../error/ClientAuthError";
15
19
  import { AuthorityType } from "../../authority/AuthorityType";
16
20
  import { Logger } from "../../logger/Logger";
17
- import { TokenClaims } from "../../account/TokenClaims";
21
+ import {
22
+ TokenClaims,
23
+ getTenantIdFromIdTokenClaims,
24
+ } from "../../account/TokenClaims";
18
25
  import { ProtocolMode } from "../../authority/ProtocolMode";
19
26
 
20
27
  /**
@@ -35,8 +42,8 @@ import { ProtocolMode } from "../../authority/ProtocolMode";
35
42
  * name: Full name for the account, including given name and family name,
36
43
  * lastModificationTime: last time this entity was modified in the cache
37
44
  * lastModificationApp:
38
- * idTokenClaims: Object containing claims parsed from ID token
39
45
  * nativeAccountId: Account identifier on the native device
46
+ * tenantProfiles: Array of tenant profile objects for each tenant that the account has authenticated with in the browser
40
47
  * }
41
48
  * @internal
42
49
  */
@@ -53,8 +60,8 @@ export class AccountEntity {
53
60
  lastModificationApp?: string;
54
61
  cloudGraphHostName?: string;
55
62
  msGraphHost?: string;
56
- idTokenClaims?: TokenClaims;
57
63
  nativeAccountId?: string;
64
+ tenantProfiles?: Array<TenantProfile>;
58
65
 
59
66
  /**
60
67
  * Generate Account Id key component as per the schema: <home_account_id>-<environment>
@@ -88,21 +95,34 @@ export class AccountEntity {
88
95
  username: this.username,
89
96
  localAccountId: this.localAccountId,
90
97
  name: this.name,
91
- idTokenClaims: this.idTokenClaims,
92
98
  nativeAccountId: this.nativeAccountId,
93
99
  authorityType: this.authorityType,
100
+ // Deserialize tenant profiles array into a Map
101
+ tenantProfiles: new Map(
102
+ (this.tenantProfiles || []).map((tenantProfile) => {
103
+ return [tenantProfile.tenantId, tenantProfile];
104
+ })
105
+ ),
94
106
  };
95
107
  }
96
108
 
109
+ /**
110
+ * Returns true if the account entity is in single tenant format (outdated), false otherwise
111
+ */
112
+ isSingleTenant(): boolean {
113
+ return !this.tenantProfiles;
114
+ }
115
+
97
116
  /**
98
117
  * Generates account key from interface
99
118
  * @param accountInterface
100
119
  */
101
120
  static generateAccountCacheKey(accountInterface: AccountInfo): string {
121
+ const homeTenantId = accountInterface.homeAccountId.split(".")[1];
102
122
  const accountKey = [
103
123
  accountInterface.homeAccountId,
104
- accountInterface.environment || Constants.EMPTY_STRING,
105
- accountInterface.tenantId || Constants.EMPTY_STRING,
124
+ accountInterface.environment || "",
125
+ homeTenantId || accountInterface.tenantId || "",
106
126
  ];
107
127
 
108
128
  return accountKey.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();
@@ -121,8 +141,10 @@ export class AccountEntity {
121
141
  msGraphHost?: string;
122
142
  environment?: string;
123
143
  nativeAccountId?: string;
144
+ tenantProfiles?: Array<TenantProfile>;
124
145
  },
125
- authority: Authority
146
+ authority: Authority,
147
+ base64Decode?: (input: string) => string
126
148
  ): AccountEntity {
127
149
  const account: AccountEntity = new AccountEntity();
128
150
 
@@ -134,6 +156,15 @@ export class AccountEntity {
134
156
  account.authorityType = CacheAccountType.GENERIC_ACCOUNT_TYPE;
135
157
  }
136
158
 
159
+ let clientInfo: ClientInfo | undefined;
160
+
161
+ if (accountDetails.clientInfo && base64Decode) {
162
+ clientInfo = buildClientInfo(
163
+ accountDetails.clientInfo,
164
+ base64Decode
165
+ );
166
+ }
167
+
137
168
  account.clientInfo = accountDetails.clientInfo;
138
169
  account.homeAccountId = accountDetails.homeAccountId;
139
170
  account.nativeAccountId = accountDetails.nativeAccountId;
@@ -151,13 +182,16 @@ export class AccountEntity {
151
182
  account.environment = env;
152
183
  // non AAD scenarios can have empty realm
153
184
  account.realm =
154
- accountDetails.idTokenClaims.tid || Constants.EMPTY_STRING;
185
+ clientInfo?.utid ||
186
+ getTenantIdFromIdTokenClaims(accountDetails.idTokenClaims) ||
187
+ "";
155
188
 
156
189
  // How do you account for MSA CID here?
157
190
  account.localAccountId =
191
+ clientInfo?.uid ||
158
192
  accountDetails.idTokenClaims.oid ||
159
193
  accountDetails.idTokenClaims.sub ||
160
- Constants.EMPTY_STRING;
194
+ "";
161
195
 
162
196
  /*
163
197
  * In B2C scenarios the emails claim is used instead of preferred_username and it is an array.
@@ -171,12 +205,26 @@ export class AccountEntity {
171
205
  ? accountDetails.idTokenClaims.emails[0]
172
206
  : null;
173
207
 
174
- account.username = preferredUsername || email || Constants.EMPTY_STRING;
208
+ account.username = preferredUsername || email || "";
175
209
  account.name = accountDetails.idTokenClaims.name;
176
210
 
177
211
  account.cloudGraphHostName = accountDetails.cloudGraphHostName;
178
212
  account.msGraphHost = accountDetails.msGraphHost;
179
213
 
214
+ if (accountDetails.tenantProfiles) {
215
+ account.tenantProfiles = accountDetails.tenantProfiles;
216
+ } else {
217
+ const tenantProfiles = [];
218
+ if (accountDetails.idTokenClaims) {
219
+ const tenantProfile = buildTenantProfileFromIdTokenClaims(
220
+ accountDetails.homeAccountId,
221
+ accountDetails.idTokenClaims
222
+ );
223
+ tenantProfiles.push(tenantProfile);
224
+ }
225
+ account.tenantProfiles = tenantProfiles;
226
+ }
227
+
180
228
  return account;
181
229
  }
182
230
 
@@ -208,6 +256,10 @@ export class AccountEntity {
208
256
 
209
257
  account.cloudGraphHostName = cloudGraphHostName;
210
258
  account.msGraphHost = msGraphHost;
259
+ // Serialize tenant profiles map into an array
260
+ account.tenantProfiles = Array.from(
261
+ accountInfo.tenantProfiles?.values() || []
262
+ );
211
263
 
212
264
  return account;
213
265
  }
@@ -224,31 +276,30 @@ export class AccountEntity {
224
276
  cryptoObj: ICrypto,
225
277
  idTokenClaims?: TokenClaims
226
278
  ): string {
227
- const accountId = idTokenClaims?.sub
228
- ? idTokenClaims.sub
229
- : Constants.EMPTY_STRING;
230
-
231
- // since ADFS does not have tid and does not set client_info
279
+ // since ADFS/DSTS do not have tid and does not set client_info
232
280
  if (
233
- authType === AuthorityType.Adfs ||
234
- authType === AuthorityType.Dsts
281
+ !(
282
+ authType === AuthorityType.Adfs ||
283
+ authType === AuthorityType.Dsts
284
+ )
235
285
  ) {
236
- return accountId;
237
- }
238
-
239
- // for cases where there is clientInfo
240
- if (serverClientInfo) {
241
- try {
242
- const clientInfo = buildClientInfo(serverClientInfo, cryptoObj);
243
- if (clientInfo.uid && clientInfo.utid) {
244
- return `${clientInfo.uid}${Separators.CLIENT_INFO_SEPARATOR}${clientInfo.utid}`;
245
- }
246
- } catch (e) {}
286
+ // for cases where there is clientInfo
287
+ if (serverClientInfo) {
288
+ try {
289
+ const clientInfo = buildClientInfo(
290
+ serverClientInfo,
291
+ cryptoObj.base64Decode
292
+ );
293
+ if (clientInfo.uid && clientInfo.utid) {
294
+ return `${clientInfo.uid}.${clientInfo.utid}`;
295
+ }
296
+ } catch (e) {}
297
+ }
298
+ logger.warning("No client info in response");
247
299
  }
248
300
 
249
301
  // default to "sub" claim
250
- logger.verbose("No client info in response");
251
- return accountId;
302
+ return idTokenClaims?.sub || "";
252
303
  }
253
304
 
254
305
  /**
@@ -8,6 +8,4 @@ import { CredentialEntity } from "./CredentialEntity";
8
8
  /**
9
9
  * Refresh Token Cache Type
10
10
  */
11
- export type RefreshTokenEntity = CredentialEntity & {
12
- expiresOn?: string;
13
- };
11
+ export type RefreshTokenEntity = CredentialEntity;
@@ -168,8 +168,7 @@ export function createRefreshTokenEntity(
168
168
  refreshToken: string,
169
169
  clientId: string,
170
170
  familyId?: string,
171
- userAssertionHash?: string,
172
- expiresOn?: string
171
+ userAssertionHash?: string
173
172
  ): RefreshTokenEntity {
174
173
  const rtEntity: RefreshTokenEntity = {
175
174
  credentialType: CredentialType.REFRESH_TOKEN,
@@ -187,10 +186,6 @@ export function createRefreshTokenEntity(
187
186
  rtEntity.familyId = familyId;
188
187
  }
189
188
 
190
- if (expiresOn) {
191
- rtEntity.expiresOn = expiresOn;
192
- }
193
-
194
189
  return rtEntity;
195
190
  }
196
191
 
@@ -60,8 +60,19 @@ export type AccountFilter = Omit<
60
60
  realm?: string;
61
61
  loginHint?: string;
62
62
  sid?: string;
63
+ isHomeTenant?: boolean;
63
64
  };
64
65
 
66
+ export type TenantProfileFilter = Pick<
67
+ AccountFilter,
68
+ | "localAccountId"
69
+ | "loginHint"
70
+ | "name"
71
+ | "sid"
72
+ | "isHomeTenant"
73
+ | "username"
74
+ >;
75
+
65
76
  /**
66
77
  * Credential: <home_account_id*>-<environment>-<credential_type>-<client_id>-<realm*>-<target*>-<scheme*>
67
78
  */
@@ -13,9 +13,9 @@ import {
13
13
  AuthenticationScheme,
14
14
  PromptValue,
15
15
  Separators,
16
- AADServerParamKeys,
17
16
  HeaderNames,
18
17
  } from "../utils/Constants";
18
+ import * as AADServerParamKeys from "../constants/AADServerParamKeys";
19
19
  import {
20
20
  ClientConfiguration,
21
21
  isOidcProtocolMode,
@@ -161,8 +161,7 @@ export class AuthorizationCodeClient extends BaseClient {
161
161
  undefined,
162
162
  undefined,
163
163
  undefined,
164
- requestId,
165
- (TimeUtils.nowSeconds() + 24 * 60 * 60).toString()
164
+ requestId
166
165
  );
167
166
  }
168
167
 
@@ -255,7 +254,7 @@ export class AuthorizationCodeClient extends BaseClient {
255
254
  try {
256
255
  const clientInfo = buildClientInfo(
257
256
  request.clientInfo,
258
- this.cryptoUtils
257
+ this.cryptoUtils.base64Decode
259
258
  );
260
259
  ccsCredential = {
261
260
  credential: `${clientInfo.uid}${Separators.CLIENT_INFO_SEPARATOR}${clientInfo.utid}`,
@@ -422,7 +421,7 @@ export class AuthorizationCodeClient extends BaseClient {
422
421
  try {
423
422
  const clientInfo = buildClientInfo(
424
423
  request.clientInfo,
425
- this.cryptoUtils
424
+ this.cryptoUtils.base64Decode
426
425
  );
427
426
  ccsCred = {
428
427
  credential: `${clientInfo.uid}${Separators.CLIENT_INFO_SEPARATOR}${clientInfo.utid}`,
@@ -17,8 +17,8 @@ import {
17
17
  AuthenticationScheme,
18
18
  Errors,
19
19
  HeaderNames,
20
- AADServerParamKeys,
21
20
  } from "../utils/Constants";
21
+ import * as AADServerParamKeys from "../constants/AADServerParamKeys";
22
22
  import { ResponseHandler } from "../response/ResponseHandler";
23
23
  import { AuthenticationResult } from "../response/AuthenticationResult";
24
24
  import { PopTokenGenerator } from "../crypto/PopTokenGenerator";
@@ -102,8 +102,7 @@ export class RefreshTokenClient extends BaseClient {
102
102
  undefined,
103
103
  true,
104
104
  request.forceCache,
105
- requestId,
106
- request.expiresOn
105
+ requestId
107
106
  );
108
107
  }
109
108
 
@@ -141,7 +140,7 @@ export class RefreshTokenClient extends BaseClient {
141
140
  // if the app is part of the family, retrive a Family refresh token if present and make a refreshTokenRequest
142
141
  if (isFOCI) {
143
142
  try {
144
- return invokeAsync(
143
+ return await invokeAsync(
145
144
  this.acquireTokenWithCachedRefreshToken.bind(this),
146
145
  PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken,
147
146
  this.logger,
@@ -216,16 +215,6 @@ export class RefreshTokenClient extends BaseClient {
216
215
  InteractionRequiredAuthErrorCodes.noTokensFound
217
216
  );
218
217
  }
219
-
220
- if (
221
- request.enableRTExpiryCheck &&
222
- refreshToken.expiresOn &&
223
- Number(refreshToken.expiresOn) < TimeUtils.nowSeconds() + 5 * 60
224
- ) {
225
- throw createInteractionRequiredAuthError(
226
- InteractionRequiredAuthErrorCodes.refreshTokenExpired
227
- );
228
- }
229
218
  // attach cached RT size to the current measurement
230
219
 
231
220
  const refreshTokenRequest: CommonRefreshTokenRequest = {
@@ -237,7 +226,6 @@ export class RefreshTokenClient extends BaseClient {
237
226
  credential: request.account.homeAccountId,
238
227
  type: CcsCredentialType.HOME_ACCOUNT_ID,
239
228
  },
240
- expiresOn: refreshToken.expiresOn,
241
229
  };
242
230
 
243
231
  return invokeAsync(
@@ -231,7 +231,7 @@ export class SilentFlowClient extends BaseClient {
231
231
  checkMaxAge(authTime, request.maxAge);
232
232
  }
233
233
 
234
- return await ResponseHandler.generateAuthenticationResult(
234
+ return ResponseHandler.generateAuthenticationResult(
235
235
  this.cryptoUtils,
236
236
  this.authority,
237
237
  cacheRecord,
@@ -0,0 +1,56 @@
1
+ /*
2
+ * Copyright (c) Microsoft Corporation. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+
6
+ export const CLIENT_ID = "client_id";
7
+ export const REDIRECT_URI = "redirect_uri";
8
+ export const RESPONSE_TYPE = "response_type";
9
+ export const RESPONSE_MODE = "response_mode";
10
+ export const GRANT_TYPE = "grant_type";
11
+ export const CLAIMS = "claims";
12
+ export const SCOPE = "scope";
13
+ export const ERROR = "error";
14
+ export const ERROR_DESCRIPTION = "error_description";
15
+ export const ACCESS_TOKEN = "access_token";
16
+ export const ID_TOKEN = "id_token";
17
+ export const REFRESH_TOKEN = "refresh_token";
18
+ export const EXPIRES_IN = "expires_in";
19
+ export const STATE = "state";
20
+ export const NONCE = "nonce";
21
+ export const PROMPT = "prompt";
22
+ export const SESSION_STATE = "session_state";
23
+ export const CLIENT_INFO = "client_info";
24
+ export const CODE = "code";
25
+ export const CODE_CHALLENGE = "code_challenge";
26
+ export const CODE_CHALLENGE_METHOD = "code_challenge_method";
27
+ export const CODE_VERIFIER = "code_verifier";
28
+ export const CLIENT_REQUEST_ID = "client-request-id";
29
+ export const X_CLIENT_SKU = "x-client-SKU";
30
+ export const X_CLIENT_VER = "x-client-VER";
31
+ export const X_CLIENT_OS = "x-client-OS";
32
+ export const X_CLIENT_CPU = "x-client-CPU";
33
+ export const X_CLIENT_CURR_TELEM = "x-client-current-telemetry";
34
+ export const X_CLIENT_LAST_TELEM = "x-client-last-telemetry";
35
+ export const X_MS_LIB_CAPABILITY = "x-ms-lib-capability";
36
+ export const X_APP_NAME = "x-app-name";
37
+ export const X_APP_VER = "x-app-ver";
38
+ export const POST_LOGOUT_URI = "post_logout_redirect_uri";
39
+ export const ID_TOKEN_HINT = "id_token_hint";
40
+ export const DEVICE_CODE = "device_code";
41
+ export const CLIENT_SECRET = "client_secret";
42
+ export const CLIENT_ASSERTION = "client_assertion";
43
+ export const CLIENT_ASSERTION_TYPE = "client_assertion_type";
44
+ export const TOKEN_TYPE = "token_type";
45
+ export const REQ_CNF = "req_cnf";
46
+ export const OBO_ASSERTION = "assertion";
47
+ export const REQUESTED_TOKEN_USE = "requested_token_use";
48
+ export const ON_BEHALF_OF = "on_behalf_of";
49
+ export const FOCI = "foci";
50
+ export const CCS_HEADER = "X-AnchorMailbox";
51
+ export const RETURN_SPA_CODE = "return_spa_code";
52
+ export const NATIVE_BROKER = "nativebroker";
53
+ export const LOGOUT_HINT = "logout_hint";
54
+ export const SID = "sid";
55
+ export const LOGIN_HINT = "login_hint";
56
+ export const DOMAIN_HINT = "domain_hint";
@@ -140,7 +140,7 @@ export class PopTokenGenerator {
140
140
  ? new UrlString(resourceRequestUri)
141
141
  : undefined;
142
142
  const resourceUrlComponents = resourceUrlString?.getUrlComponents();
143
- return await this.cryptoUtils.signJwt(
143
+ return this.cryptoUtils.signJwt(
144
144
  {
145
145
  at: payload,
146
146
  ts: TimeUtils.nowSeconds(),
@@ -28,8 +28,6 @@ export const InteractionRequiredAuthSubErrorMessage = [
28
28
  const InteractionRequiredAuthErrorMessages = {
29
29
  [InteractionRequiredAuthErrorCodes.noTokensFound]:
30
30
  "No refresh token found in the cache. Please sign-in.",
31
- [InteractionRequiredAuthErrorCodes.refreshTokenExpired]:
32
- "Refresh token has expired.",
33
31
  [InteractionRequiredAuthErrorCodes.nativeAccountUnavailable]:
34
32
  "The requested account is not available in the native broker. It may have been deleted or logged out. Please sign-in again using an interactive API.",
35
33
  };
@@ -6,7 +6,6 @@
6
6
  // Codes defined by MSAL
7
7
  export const noTokensFound = "no_tokens_found";
8
8
  export const nativeAccountUnavailable = "native_account_unavailable";
9
- export const refreshTokenExpired = "refresh_token_expired";
10
9
 
11
10
  // Codes potentially returned by server
12
11
  export const interactionRequired = "interaction_required";
package/src/index.ts CHANGED
@@ -28,9 +28,19 @@ export {
28
28
  } from "./config/AppTokenProvider";
29
29
  export { ClientConfiguration } from "./config/ClientConfiguration";
30
30
  // Account
31
- export { AccountInfo, ActiveAccountFilters } from "./account/AccountInfo";
31
+ export {
32
+ AccountInfo,
33
+ ActiveAccountFilters,
34
+ TenantProfile,
35
+ updateAccountTenantProfileData,
36
+ tenantIdMatchesHomeTenant,
37
+ buildTenantProfileFromIdTokenClaims,
38
+ } from "./account/AccountInfo";
32
39
  export * as AuthToken from "./account/AuthToken";
33
- export { TokenClaims } from "./account/TokenClaims";
40
+ export {
41
+ TokenClaims,
42
+ getTenantIdFromIdTokenClaims,
43
+ } from "./account/TokenClaims";
34
44
  export { TokenClaims as IdTokenClaims } from "./account/TokenClaims";
35
45
  export { CcsCredential, CcsCredentialType } from "./account/CcsCredential";
36
46
  export {
@@ -136,7 +146,10 @@ export {
136
146
  DeviceCodeResponse,
137
147
  ServerDeviceCodeResponse,
138
148
  } from "./response/DeviceCodeResponse";
139
- export { ResponseHandler } from "./response/ResponseHandler";
149
+ export {
150
+ ResponseHandler,
151
+ buildAccountToCache,
152
+ } from "./response/ResponseHandler";
140
153
  export { ScopeSet } from "./request/ScopeSet";
141
154
  export { AuthenticationHeaderParser } from "./request/AuthenticationHeaderParser";
142
155
  // Logger Callback
@@ -181,12 +194,10 @@ export {
181
194
  CacheAccountType,
182
195
  AuthenticationScheme,
183
196
  CodeChallengeMethodValues,
184
- SSOTypes,
185
197
  PasswordGrantConstants,
186
198
  ThrottlingConstants,
187
199
  ClaimsRequestKeys,
188
200
  HeaderNames,
189
- AADServerParamKeys,
190
201
  Errors,
191
202
  THE_FAMILY_ID,
192
203
  ONE_DAY_IN_MS,
@@ -195,6 +206,7 @@ export {
195
206
  HttpStatus,
196
207
  JsonWebTokenTypes,
197
208
  } from "./utils/Constants";
209
+ export * as AADServerParamKeys from "./constants/AADServerParamKeys";
198
210
  export { StringUtils } from "./utils/StringUtils";
199
211
  export { StringDict } from "./utils/MsalTypes";
200
212
  export {
@@ -1,3 +1,3 @@
1
1
  /* eslint-disable header/header */
2
2
  export const name = "@azure/msal-common";
3
- export const version = "14.4.1-beta.1";
3
+ export const version = "14.5.0";
@@ -21,7 +21,6 @@ import { StringDict } from "../utils/MsalTypes";
21
21
  */
22
22
  export type CommonRefreshTokenRequest = BaseAuthRequest & {
23
23
  refreshToken: string;
24
- expiresOn?: string;
25
24
  ccsCredential?: CcsCredential;
26
25
  forceCache?: boolean;
27
26
  tokenBodyParameters?: StringDict;
@@ -23,5 +23,4 @@ export type CommonSilentFlowRequest = BaseAuthRequest & {
23
23
  account: AccountInfo;
24
24
  forceRefresh: boolean;
25
25
  tokenBodyParameters?: StringDict;
26
- enableRTExpiryCheck?: boolean;
27
26
  };
@@ -4,10 +4,8 @@
4
4
  */
5
5
 
6
6
  import {
7
- AADServerParamKeys,
8
7
  Constants,
9
8
  ResponseMode,
10
- SSOTypes,
11
9
  CLIENT_INFO,
12
10
  AuthenticationScheme,
13
11
  ClaimsRequestKeys,
@@ -16,6 +14,7 @@ import {
16
14
  ThrottlingConstants,
17
15
  HeaderNames,
18
16
  } from "../utils/Constants";
17
+ import * as AADServerParamKeys from "../constants/AADServerParamKeys";
19
18
  import { ScopeSet } from "./ScopeSet";
20
19
  import {
21
20
  createClientConfigurationError,
@@ -161,7 +160,7 @@ export class RequestParameterBuilder {
161
160
  */
162
161
  addDomainHint(domainHint: string): void {
163
162
  this.parameters.set(
164
- SSOTypes.DOMAIN_HINT,
163
+ AADServerParamKeys.DOMAIN_HINT,
165
164
  encodeURIComponent(domainHint)
166
165
  );
167
166
  }
@@ -171,7 +170,10 @@ export class RequestParameterBuilder {
171
170
  * @param loginHint
172
171
  */
173
172
  addLoginHint(loginHint: string): void {
174
- this.parameters.set(SSOTypes.LOGIN_HINT, encodeURIComponent(loginHint));
173
+ this.parameters.set(
174
+ AADServerParamKeys.LOGIN_HINT,
175
+ encodeURIComponent(loginHint)
176
+ );
175
177
  }
176
178
 
177
179
  /**
@@ -201,7 +203,7 @@ export class RequestParameterBuilder {
201
203
  * @param sid
202
204
  */
203
205
  addSid(sid: string): void {
204
- this.parameters.set(SSOTypes.SID, encodeURIComponent(sid));
206
+ this.parameters.set(AADServerParamKeys.SID, encodeURIComponent(sid));
205
207
  }
206
208
 
207
209
  /**