@azure/msal-browser 3.5.0 → 3.5.1-beta.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 (192) hide show
  1. package/dist/app/IPublicClientApplication.d.ts +51 -51
  2. package/dist/app/IPublicClientApplication.mjs +102 -102
  3. package/dist/app/PublicClientApplication.d.ts +268 -268
  4. package/dist/app/PublicClientApplication.mjs +333 -333
  5. package/dist/app/PublicClientNext.d.ts +273 -273
  6. package/dist/app/PublicClientNext.mjs +351 -351
  7. package/dist/broker/nativeBroker/NativeMessageHandler.d.ts +62 -62
  8. package/dist/broker/nativeBroker/NativeMessageHandler.mjs +254 -254
  9. package/dist/broker/nativeBroker/NativeRequest.d.ts +44 -44
  10. package/dist/broker/nativeBroker/NativeResponse.d.ts +48 -48
  11. package/dist/broker/nativeBroker/NativeStatusCodes.d.ts +7 -7
  12. package/dist/broker/nativeBroker/NativeStatusCodes.mjs +11 -11
  13. package/dist/cache/AsyncMemoryStorage.d.ts +51 -51
  14. package/dist/cache/AsyncMemoryStorage.mjs +132 -132
  15. package/dist/cache/BrowserCacheManager.d.ts +383 -383
  16. package/dist/cache/BrowserCacheManager.mjs +1262 -1262
  17. package/dist/cache/BrowserStorage.d.ts +11 -11
  18. package/dist/cache/BrowserStorage.mjs +32 -32
  19. package/dist/cache/CryptoKeyStore.d.ts +18 -18
  20. package/dist/cache/CryptoKeyStore.mjs +40 -40
  21. package/dist/cache/DatabaseStorage.d.ts +56 -56
  22. package/dist/cache/DatabaseStorage.mjs +190 -190
  23. package/dist/cache/IAsyncMemoryStorage.d.ts +27 -27
  24. package/dist/cache/ITokenCache.d.ts +11 -11
  25. package/dist/cache/IWindowStorage.d.ts +27 -27
  26. package/dist/cache/MemoryStorage.d.ts +11 -11
  27. package/dist/cache/MemoryStorage.mjs +31 -31
  28. package/dist/cache/TokenCache.d.ts +77 -77
  29. package/dist/cache/TokenCache.mjs +224 -224
  30. package/dist/config/Configuration.d.ts +206 -206
  31. package/dist/config/Configuration.mjs +128 -128
  32. package/dist/controllers/ControllerFactory.d.ts +4 -4
  33. package/dist/controllers/ControllerFactory.mjs +29 -29
  34. package/dist/controllers/IController.d.ts +61 -61
  35. package/dist/controllers/NestedAppAuthController.d.ts +95 -95
  36. package/dist/controllers/NestedAppAuthController.d.ts.map +1 -1
  37. package/dist/controllers/NestedAppAuthController.mjs +335 -333
  38. package/dist/controllers/NestedAppAuthController.mjs.map +1 -1
  39. package/dist/controllers/StandardController.d.ts +407 -407
  40. package/dist/controllers/StandardController.d.ts.map +1 -1
  41. package/dist/controllers/StandardController.mjs +1293 -1291
  42. package/dist/controllers/StandardController.mjs.map +1 -1
  43. package/dist/controllers/UnknownOperatingContextController.d.ts +87 -87
  44. package/dist/controllers/UnknownOperatingContextController.mjs +264 -264
  45. package/dist/crypto/BrowserCrypto.d.ts +44 -44
  46. package/dist/crypto/BrowserCrypto.mjs +93 -93
  47. package/dist/crypto/CryptoOps.d.ts +63 -63
  48. package/dist/crypto/CryptoOps.mjs +145 -145
  49. package/dist/crypto/PkceGenerator.d.ts +8 -8
  50. package/dist/crypto/PkceGenerator.mjs +54 -54
  51. package/dist/crypto/SignedHttpRequest.d.ts +30 -30
  52. package/dist/crypto/SignedHttpRequest.mjs +39 -39
  53. package/dist/encode/Base64Decode.d.ts +9 -9
  54. package/dist/encode/Base64Decode.mjs +36 -36
  55. package/dist/encode/Base64Encode.d.ts +19 -19
  56. package/dist/encode/Base64Encode.mjs +43 -43
  57. package/dist/error/BrowserAuthError.d.ts +250 -250
  58. package/dist/error/BrowserAuthError.mjs +258 -258
  59. package/dist/error/BrowserAuthErrorCodes.d.ts +45 -45
  60. package/dist/error/BrowserAuthErrorCodes.mjs +49 -49
  61. package/dist/error/BrowserConfigurationAuthError.d.ts +33 -33
  62. package/dist/error/BrowserConfigurationAuthError.mjs +40 -40
  63. package/dist/error/BrowserConfigurationAuthErrorCodes.d.ts +3 -3
  64. package/dist/error/BrowserConfigurationAuthErrorCodes.mjs +7 -7
  65. package/dist/error/NativeAuthError.d.ts +29 -29
  66. package/dist/error/NativeAuthError.mjs +60 -60
  67. package/dist/error/NativeAuthErrorCodes.d.ts +2 -2
  68. package/dist/error/NativeAuthErrorCodes.mjs +6 -6
  69. package/dist/error/NestedAppAuthError.d.ts +14 -14
  70. package/dist/error/NestedAppAuthError.mjs +23 -23
  71. package/dist/event/EventHandler.d.ts +41 -41
  72. package/dist/event/EventHandler.mjs +119 -119
  73. package/dist/event/EventMessage.d.ts +25 -25
  74. package/dist/event/EventMessage.mjs +68 -68
  75. package/dist/event/EventType.d.ts +28 -28
  76. package/dist/event/EventType.mjs +31 -31
  77. package/dist/index.d.ts +39 -39
  78. package/dist/index.mjs +1 -1
  79. package/dist/interaction_client/BaseInteractionClient.d.ts +54 -54
  80. package/dist/interaction_client/BaseInteractionClient.mjs +152 -152
  81. package/dist/interaction_client/HybridSpaAuthorizationCodeClient.d.ts +4 -4
  82. package/dist/interaction_client/HybridSpaAuthorizationCodeClient.mjs +10 -10
  83. package/dist/interaction_client/NativeInteractionClient.d.ts +140 -140
  84. package/dist/interaction_client/NativeInteractionClient.mjs +548 -548
  85. package/dist/interaction_client/PopupClient.d.ts +105 -105
  86. package/dist/interaction_client/PopupClient.mjs +432 -432
  87. package/dist/interaction_client/RedirectClient.d.ts +49 -49
  88. package/dist/interaction_client/RedirectClient.mjs +311 -311
  89. package/dist/interaction_client/SilentAuthCodeClient.d.ts +23 -23
  90. package/dist/interaction_client/SilentAuthCodeClient.mjs +57 -57
  91. package/dist/interaction_client/SilentCacheClient.d.ts +24 -24
  92. package/dist/interaction_client/SilentCacheClient.mjs +61 -61
  93. package/dist/interaction_client/SilentIframeClient.d.ts +32 -32
  94. package/dist/interaction_client/SilentIframeClient.mjs +96 -96
  95. package/dist/interaction_client/SilentRefreshClient.d.ts +20 -20
  96. package/dist/interaction_client/SilentRefreshClient.mjs +43 -43
  97. package/dist/interaction_client/StandardInteractionClient.d.ts +54 -54
  98. package/dist/interaction_client/StandardInteractionClient.mjs +222 -222
  99. package/dist/interaction_handler/InteractionHandler.d.ts +33 -33
  100. package/dist/interaction_handler/InteractionHandler.mjs +93 -93
  101. package/dist/interaction_handler/RedirectHandler.d.ts +32 -32
  102. package/dist/interaction_handler/RedirectHandler.mjs +134 -134
  103. package/dist/interaction_handler/SilentHandler.d.ts +13 -13
  104. package/dist/interaction_handler/SilentHandler.mjs +133 -133
  105. package/dist/naa/AccountInfo.d.ts +11 -12
  106. package/dist/naa/AccountInfo.d.ts.map +1 -1
  107. package/dist/naa/AccountRequests.d.ts +9 -9
  108. package/dist/naa/AuthBridge.d.ts +5 -5
  109. package/dist/naa/BridgeCapabilities.d.ts +3 -3
  110. package/dist/naa/BridgeError.d.ts +9 -9
  111. package/dist/naa/BridgeError.d.ts.map +1 -1
  112. package/dist/naa/BridgeError.mjs +7 -7
  113. package/dist/naa/BridgeError.mjs.map +1 -1
  114. package/dist/naa/BridgeProxy.d.ts +72 -71
  115. package/dist/naa/BridgeProxy.d.ts.map +1 -1
  116. package/dist/naa/BridgeProxy.mjs +152 -149
  117. package/dist/naa/BridgeProxy.mjs.map +1 -1
  118. package/dist/naa/BridgeRequest.d.ts +6 -6
  119. package/dist/naa/BridgeRequestEnvelope.d.ts +13 -13
  120. package/dist/naa/BridgeResponseEnvelope.d.ts +10 -10
  121. package/dist/naa/BridgeStatusCode.d.ts +10 -10
  122. package/dist/naa/BridgeStatusCode.mjs +15 -15
  123. package/dist/naa/IBridgeProxy.d.ts +12 -10
  124. package/dist/naa/IBridgeProxy.d.ts.map +1 -1
  125. package/dist/naa/InitializeBridgeResponse.d.ts +6 -6
  126. package/dist/naa/InitializeBridgeResponse.d.ts.map +1 -1
  127. package/dist/naa/TokenRequest.d.ts +19 -21
  128. package/dist/naa/TokenRequest.d.ts.map +1 -1
  129. package/dist/naa/TokenResponse.d.ts +15 -16
  130. package/dist/naa/TokenResponse.d.ts.map +1 -1
  131. package/dist/naa/mapping/NestedAppAuthAdapter.d.ts +23 -25
  132. package/dist/naa/mapping/NestedAppAuthAdapter.d.ts.map +1 -1
  133. package/dist/naa/mapping/NestedAppAuthAdapter.mjs +142 -170
  134. package/dist/naa/mapping/NestedAppAuthAdapter.mjs.map +1 -1
  135. package/dist/navigation/INavigationClient.d.ts +16 -16
  136. package/dist/navigation/NavigationClient.d.ts +22 -22
  137. package/dist/navigation/NavigationClient.mjs +40 -40
  138. package/dist/navigation/NavigationOptions.d.ts +12 -12
  139. package/dist/network/FetchClient.d.ts +26 -26
  140. package/dist/network/FetchClient.mjs +99 -99
  141. package/dist/operatingcontext/BaseOperatingContext.d.ts +40 -40
  142. package/dist/operatingcontext/BaseOperatingContext.mjs +44 -44
  143. package/dist/operatingcontext/StandardOperatingContext.d.ts +25 -25
  144. package/dist/operatingcontext/StandardOperatingContext.mjs +43 -43
  145. package/dist/operatingcontext/TeamsAppOperatingContext.d.ts +32 -32
  146. package/dist/operatingcontext/TeamsAppOperatingContext.d.ts.map +1 -1
  147. package/dist/operatingcontext/TeamsAppOperatingContext.mjs +85 -82
  148. package/dist/operatingcontext/TeamsAppOperatingContext.mjs.map +1 -1
  149. package/dist/operatingcontext/UnknownOperatingContext.d.ts +25 -25
  150. package/dist/operatingcontext/UnknownOperatingContext.mjs +42 -42
  151. package/dist/packageMetadata.d.ts +2 -2
  152. package/dist/packageMetadata.mjs +3 -3
  153. package/dist/request/AuthorizationCodeRequest.d.ts +8 -8
  154. package/dist/request/AuthorizationUrlRequest.d.ts +8 -8
  155. package/dist/request/ClearCacheRequest.d.ts +10 -10
  156. package/dist/request/EndSessionPopupRequest.d.ts +18 -18
  157. package/dist/request/EndSessionRequest.d.ts +15 -15
  158. package/dist/request/PopupRequest.d.ts +34 -34
  159. package/dist/request/PopupWindowAttributes.d.ts +15 -15
  160. package/dist/request/RedirectRequest.d.ts +35 -35
  161. package/dist/request/SilentRequest.d.ts +32 -32
  162. package/dist/request/SsoSilentRequest.d.ts +29 -29
  163. package/dist/response/AuthenticationResult.d.ts +4 -4
  164. package/dist/response/ResponseHandler.d.ts +7 -7
  165. package/dist/response/ResponseHandler.mjs +36 -36
  166. package/dist/telemetry/BrowserPerformanceClient.d.ts +36 -36
  167. package/dist/telemetry/BrowserPerformanceClient.mjs +125 -125
  168. package/dist/telemetry/BrowserPerformanceMeasurement.d.ts +21 -21
  169. package/dist/telemetry/BrowserPerformanceMeasurement.mjs +92 -92
  170. package/dist/utils/BrowserConstants.d.ts +176 -176
  171. package/dist/utils/BrowserConstants.mjs +204 -204
  172. package/dist/utils/BrowserProtocolUtils.d.ts +11 -11
  173. package/dist/utils/BrowserProtocolUtils.mjs +21 -21
  174. package/dist/utils/BrowserUtils.d.ts +56 -56
  175. package/dist/utils/BrowserUtils.mjs +125 -125
  176. package/lib/msal-browser.cjs +17920 -17926
  177. package/lib/msal-browser.cjs.map +1 -1
  178. package/lib/msal-browser.js +17920 -17926
  179. package/lib/msal-browser.js.map +1 -1
  180. package/lib/msal-browser.min.js +59 -59
  181. package/package.json +102 -102
  182. package/src/controllers/NestedAppAuthController.ts +8 -3
  183. package/src/controllers/StandardController.ts +3 -1
  184. package/src/naa/AccountInfo.ts +3 -4
  185. package/src/naa/BridgeError.ts +4 -4
  186. package/src/naa/BridgeProxy.ts +6 -2
  187. package/src/naa/IBridgeProxy.ts +2 -0
  188. package/src/naa/InitializeBridgeResponse.ts +1 -1
  189. package/src/naa/TokenRequest.ts +0 -2
  190. package/src/naa/TokenResponse.ts +1 -2
  191. package/src/naa/mapping/NestedAppAuthAdapter.ts +72 -80
  192. package/src/operatingcontext/TeamsAppOperatingContext.ts +4 -1
@@ -1,6 +1,6 @@
1
- /*! @azure/msal-browser v3.5.0 2023-11-07 */
1
+ /*! @azure/msal-browser v3.5.1-beta.0 2023-11-14 */
2
2
  'use strict';
3
- import { DEFAULT_CRYPTO_IMPLEMENTATION, PerformanceEvents } from '@azure/msal-common';
3
+ import { DEFAULT_CRYPTO_IMPLEMENTATION, PerformanceEvents, TimeUtils } from '@azure/msal-common';
4
4
  import { InteractionType } from '../utils/BrowserConstants.mjs';
5
5
  import { CryptoOps } from '../crypto/CryptoOps.mjs';
6
6
  import { NestedAppAuthAdapter } from '../naa/mapping/NestedAppAuthAdapter.mjs';
@@ -8,337 +8,339 @@ import { NestedAppAuthError } from '../error/NestedAppAuthError.mjs';
8
8
  import { EventHandler } from '../event/EventHandler.mjs';
9
9
  import { EventType } from '../event/EventType.mjs';
10
10
 
11
- /*
12
- * Copyright (c) Microsoft Corporation. All rights reserved.
13
- * Licensed under the MIT License.
14
- */
15
- class NestedAppAuthController {
16
- constructor(operatingContext) {
17
- this.operatingContext = operatingContext;
18
- const proxy = this.operatingContext.getBridgeProxy();
19
- if (proxy !== undefined) {
20
- this.bridgeProxy = proxy;
21
- }
22
- else {
23
- throw new Error("unexpected: bridgeProxy is undefined");
24
- }
25
- // Set the configuration.
26
- this.config = operatingContext.getConfig();
27
- // Initialize logger
28
- this.logger = this.operatingContext.getLogger();
29
- // Initialize performance client
30
- this.performanceClient = this.config.telemetry.client;
31
- // Initialize the crypto class.
32
- this.browserCrypto = operatingContext.isBrowserEnvironment()
33
- ? new CryptoOps(this.logger, this.performanceClient)
34
- : DEFAULT_CRYPTO_IMPLEMENTATION;
35
- this.eventHandler = new EventHandler(this.logger, this.browserCrypto);
36
- this.nestedAppAuthAdapter = new NestedAppAuthAdapter(this.config.auth.clientId, this.config.auth.clientCapabilities, this.browserCrypto, this.logger);
37
- }
38
- getBrowserStorage() {
39
- throw NestedAppAuthError.createUnsupportedError();
40
- }
41
- getEventHandler() {
42
- return this.eventHandler;
43
- }
44
- static async createController(operatingContext) {
45
- const controller = new NestedAppAuthController(operatingContext);
46
- return Promise.resolve(controller);
47
- }
48
- initialize() {
49
- // do nothing not required by this controller
50
- return Promise.resolve();
51
- }
52
- async acquireTokenInteractive(request) {
53
- this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_START, InteractionType.Popup, request);
54
- const atPopupMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.AcquireTokenPopup, request.correlationId);
55
- atPopupMeasurement?.add({ nestedAppAuthRequest: true });
56
- try {
57
- const naaRequest = this.nestedAppAuthAdapter.toNaaTokenRequest(request);
58
- const response = await this.bridgeProxy.getTokenInteractive(naaRequest);
59
- const result = this.nestedAppAuthAdapter.fromNaaTokenResponse(naaRequest, response);
60
- this.operatingContext.setActiveAccount(result.account);
61
- this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_SUCCESS, InteractionType.Popup, result);
62
- atPopupMeasurement.add({
63
- accessTokenSize: result.accessToken.length,
64
- idTokenSize: result.idToken.length,
65
- });
66
- atPopupMeasurement.end({
67
- success: true,
68
- requestId: result.requestId,
69
- });
70
- return result;
71
- }
72
- catch (e) {
73
- const error = this.nestedAppAuthAdapter.fromBridgeError(e);
74
- this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_FAILURE, InteractionType.Popup, null, e);
75
- atPopupMeasurement.end({
76
- errorCode: error.errorCode,
77
- subErrorCode: error.subError,
78
- success: false,
79
- });
80
- throw error;
81
- }
82
- }
83
- async acquireTokenSilentInternal(request) {
84
- this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_START, InteractionType.Silent, request);
85
- const ssoSilentMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.SsoSilent, request.correlationId);
86
- ssoSilentMeasurement?.increment({
87
- visibilityChangeCount: 0,
88
- });
89
- ssoSilentMeasurement?.add({
90
- nestedAppAuthRequest: true,
91
- });
92
- try {
93
- const naaRequest = this.nestedAppAuthAdapter.toNaaSilentTokenRequest(request);
94
- const response = await this.bridgeProxy.getTokenSilent(naaRequest);
95
- const result = this.nestedAppAuthAdapter.fromNaaTokenResponse(naaRequest, response);
96
- this.operatingContext.setActiveAccount(result.account);
97
- this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_SUCCESS, InteractionType.Silent, result);
98
- ssoSilentMeasurement?.add({
99
- accessTokenSize: result.accessToken.length,
100
- idTokenSize: result.idToken.length,
101
- });
102
- ssoSilentMeasurement?.end({
103
- success: true,
104
- requestId: result.requestId,
105
- });
106
- return result;
107
- }
108
- catch (e) {
109
- const error = this.nestedAppAuthAdapter.fromBridgeError(e);
110
- this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_FAILURE, InteractionType.Silent, null, e);
111
- ssoSilentMeasurement?.end({
112
- errorCode: error.errorCode,
113
- subErrorCode: error.subError,
114
- success: false,
115
- });
116
- throw error;
117
- }
118
- }
119
- async acquireTokenPopup(request) {
120
- return this.acquireTokenInteractive(request);
121
- }
122
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
123
- acquireTokenRedirect(request) {
124
- throw NestedAppAuthError.createUnsupportedError();
125
- }
126
- async acquireTokenSilent(silentRequest) {
127
- return this.acquireTokenSilentInternal(silentRequest);
128
- }
129
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
130
- acquireTokenByCode(request // eslint-disable-line @typescript-eslint/no-unused-vars
131
- ) {
132
- throw NestedAppAuthError.createUnsupportedError();
133
- }
134
- acquireTokenNative(request, apiId, // eslint-disable-line @typescript-eslint/no-unused-vars
135
- accountId // eslint-disable-line @typescript-eslint/no-unused-vars
136
- ) {
137
- throw NestedAppAuthError.createUnsupportedError();
138
- }
139
- acquireTokenByRefreshToken(commonRequest, // eslint-disable-line @typescript-eslint/no-unused-vars
140
- silentRequest // eslint-disable-line @typescript-eslint/no-unused-vars
141
- ) {
142
- throw NestedAppAuthError.createUnsupportedError();
143
- }
144
- /**
145
- * Adds event callbacks to array
146
- * @param callback
147
- */
148
- addEventCallback(callback) {
149
- return this.eventHandler.addEventCallback(callback);
150
- }
151
- /**
152
- * Removes callback with provided id from callback array
153
- * @param callbackId
154
- */
155
- removeEventCallback(callbackId) {
156
- this.eventHandler.removeEventCallback(callbackId);
157
- }
158
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
159
- addPerformanceCallback(callback) {
160
- throw NestedAppAuthError.createUnsupportedError();
161
- }
162
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
163
- removePerformanceCallback(callbackId) {
164
- throw NestedAppAuthError.createUnsupportedError();
165
- }
166
- enableAccountStorageEvents() {
167
- throw NestedAppAuthError.createUnsupportedError();
168
- }
169
- disableAccountStorageEvents() {
170
- throw NestedAppAuthError.createUnsupportedError();
171
- }
172
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
173
- getAccount(accountFilter) {
174
- throw NestedAppAuthError.createUnsupportedError();
175
- // TODO: Look at standard implementation
176
- }
177
- getAccountByHomeId(homeAccountId) {
178
- const currentAccount = this.operatingContext.getActiveAccount();
179
- if (currentAccount !== undefined) {
180
- if (currentAccount.homeAccountId === homeAccountId) {
181
- return this.nestedAppAuthAdapter.fromNaaAccountInfo(currentAccount);
182
- }
183
- else {
184
- return null;
185
- }
186
- }
187
- else {
188
- return null;
189
- }
190
- }
191
- getAccountByLocalId(localId) {
192
- const currentAccount = this.operatingContext.getActiveAccount();
193
- if (currentAccount !== undefined) {
194
- if (currentAccount.localAccountId === localId) {
195
- return this.nestedAppAuthAdapter.fromNaaAccountInfo(currentAccount);
196
- }
197
- else {
198
- return null;
199
- }
200
- }
201
- else {
202
- return null;
203
- }
204
- }
205
- getAccountByUsername(userName) {
206
- const currentAccount = this.operatingContext.getActiveAccount();
207
- if (currentAccount !== undefined) {
208
- if (currentAccount.username === userName) {
209
- return this.nestedAppAuthAdapter.fromNaaAccountInfo(currentAccount);
210
- }
211
- else {
212
- return null;
213
- }
214
- }
215
- else {
216
- return null;
217
- }
218
- }
219
- getAllAccounts() {
220
- const currentAccount = this.operatingContext.getActiveAccount();
221
- if (currentAccount !== undefined) {
222
- return [
223
- this.nestedAppAuthAdapter.fromNaaAccountInfo(currentAccount),
224
- ];
225
- }
226
- else {
227
- return [];
228
- }
229
- }
230
- handleRedirectPromise(hash // eslint-disable-line @typescript-eslint/no-unused-vars
231
- ) {
232
- throw NestedAppAuthError.createUnsupportedError();
233
- }
234
- loginPopup(request // eslint-disable-line @typescript-eslint/no-unused-vars
235
- ) {
236
- if (request !== undefined) {
237
- return this.acquireTokenInteractive(request);
238
- }
239
- else {
240
- throw NestedAppAuthError.createUnsupportedError();
241
- }
242
- }
243
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
244
- loginRedirect(request) {
245
- throw NestedAppAuthError.createUnsupportedError();
246
- }
247
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
248
- logout(logoutRequest) {
249
- throw NestedAppAuthError.createUnsupportedError();
250
- }
251
- logoutRedirect(logoutRequest // eslint-disable-line @typescript-eslint/no-unused-vars
252
- ) {
253
- throw NestedAppAuthError.createUnsupportedError();
254
- }
255
- logoutPopup(logoutRequest // eslint-disable-line @typescript-eslint/no-unused-vars
256
- ) {
257
- throw NestedAppAuthError.createUnsupportedError();
258
- }
259
- ssoSilent(
260
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
261
- request) {
262
- return this.acquireTokenSilentInternal(request);
263
- }
264
- getTokenCache() {
265
- throw NestedAppAuthError.createUnsupportedError();
266
- }
267
- /**
268
- * Returns the logger instance
269
- */
270
- getLogger() {
271
- return this.logger;
272
- }
273
- /**
274
- * Replaces the default logger set in configurations with new Logger with new configurations
275
- * @param logger Logger instance
276
- */
277
- setLogger(logger) {
278
- this.logger = logger;
279
- }
280
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
281
- setActiveAccount(account) {
282
- /*
283
- * StandardController uses this to allow the developer to set the active account
284
- * in the nested app auth scenario the active account is controlled by the app hosting the nested app
285
- */
286
- this.logger.warning("nestedAppAuth does not support setActiveAccount");
287
- return;
288
- }
289
- getActiveAccount() {
290
- const currentAccount = this.operatingContext.getActiveAccount();
291
- if (currentAccount !== undefined) {
292
- return this.nestedAppAuthAdapter.fromNaaAccountInfo(currentAccount);
293
- }
294
- else {
295
- return null;
296
- }
297
- }
298
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
299
- initializeWrapperLibrary(sku, version) {
300
- /*
301
- * Standard controller uses this to set the sku and version of the wrapper library in the storage
302
- * we do nothing here
303
- */
304
- return;
305
- }
306
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
307
- setNavigationClient(navigationClient) {
308
- this.logger.warning("setNavigationClient is not supported in nested app auth");
309
- }
310
- getConfiguration() {
311
- return this.config;
312
- }
313
- isBrowserEnv() {
314
- return this.operatingContext.isBrowserEnvironment();
315
- }
316
- getBrowserCrypto() {
317
- return this.browserCrypto;
318
- }
319
- getPerformanceClient() {
320
- throw NestedAppAuthError.createUnsupportedError();
321
- }
322
- getRedirectResponse() {
323
- throw NestedAppAuthError.createUnsupportedError();
324
- }
325
- preflightBrowserEnvironmentCheck(interactionType, // eslint-disable-line @typescript-eslint/no-unused-vars
326
- setInteractionInProgress // eslint-disable-line @typescript-eslint/no-unused-vars
327
- ) {
328
- throw NestedAppAuthError.createUnsupportedError();
329
- }
330
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
331
- async clearCache(logoutRequest) {
332
- throw NestedAppAuthError.createUnsupportedError();
333
- }
334
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
335
- async hydrateCache(
336
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
337
- result,
338
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
339
- request) {
340
- throw NestedAppAuthError.createUnsupportedError();
341
- }
11
+ /*
12
+ * Copyright (c) Microsoft Corporation. All rights reserved.
13
+ * Licensed under the MIT License.
14
+ */
15
+ class NestedAppAuthController {
16
+ constructor(operatingContext) {
17
+ this.operatingContext = operatingContext;
18
+ const proxy = this.operatingContext.getBridgeProxy();
19
+ if (proxy !== undefined) {
20
+ this.bridgeProxy = proxy;
21
+ }
22
+ else {
23
+ throw new Error("unexpected: bridgeProxy is undefined");
24
+ }
25
+ // Set the configuration.
26
+ this.config = operatingContext.getConfig();
27
+ // Initialize logger
28
+ this.logger = this.operatingContext.getLogger();
29
+ // Initialize performance client
30
+ this.performanceClient = this.config.telemetry.client;
31
+ // Initialize the crypto class.
32
+ this.browserCrypto = operatingContext.isBrowserEnvironment()
33
+ ? new CryptoOps(this.logger, this.performanceClient)
34
+ : DEFAULT_CRYPTO_IMPLEMENTATION;
35
+ this.eventHandler = new EventHandler(this.logger, this.browserCrypto);
36
+ this.nestedAppAuthAdapter = new NestedAppAuthAdapter(this.config.auth.clientId, this.config.auth.clientCapabilities, this.browserCrypto, this.logger);
37
+ }
38
+ getBrowserStorage() {
39
+ throw NestedAppAuthError.createUnsupportedError();
40
+ }
41
+ getEventHandler() {
42
+ return this.eventHandler;
43
+ }
44
+ static async createController(operatingContext) {
45
+ const controller = new NestedAppAuthController(operatingContext);
46
+ return Promise.resolve(controller);
47
+ }
48
+ initialize() {
49
+ // do nothing not required by this controller
50
+ return Promise.resolve();
51
+ }
52
+ async acquireTokenInteractive(request) {
53
+ this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_START, InteractionType.Popup, request);
54
+ const atPopupMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.AcquireTokenPopup, request.correlationId);
55
+ atPopupMeasurement?.add({ nestedAppAuthRequest: true });
56
+ try {
57
+ const naaRequest = this.nestedAppAuthAdapter.toNaaTokenRequest(request);
58
+ const reqTimestamp = TimeUtils.nowSeconds();
59
+ const response = await this.bridgeProxy.getTokenInteractive(naaRequest);
60
+ const result = this.nestedAppAuthAdapter.fromNaaTokenResponse(naaRequest, response, reqTimestamp);
61
+ this.operatingContext.setActiveAccount(result.account);
62
+ this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_SUCCESS, InteractionType.Popup, result);
63
+ atPopupMeasurement.add({
64
+ accessTokenSize: result.accessToken.length,
65
+ idTokenSize: result.idToken.length,
66
+ });
67
+ atPopupMeasurement.end({
68
+ success: true,
69
+ requestId: result.requestId,
70
+ });
71
+ return result;
72
+ }
73
+ catch (e) {
74
+ const error = this.nestedAppAuthAdapter.fromBridgeError(e);
75
+ this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_FAILURE, InteractionType.Popup, null, e);
76
+ atPopupMeasurement.end({
77
+ errorCode: error.errorCode,
78
+ subErrorCode: error.subError,
79
+ success: false,
80
+ });
81
+ throw error;
82
+ }
83
+ }
84
+ async acquireTokenSilentInternal(request) {
85
+ this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_START, InteractionType.Silent, request);
86
+ const ssoSilentMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.SsoSilent, request.correlationId);
87
+ ssoSilentMeasurement?.increment({
88
+ visibilityChangeCount: 0,
89
+ });
90
+ ssoSilentMeasurement?.add({
91
+ nestedAppAuthRequest: true,
92
+ });
93
+ try {
94
+ const naaRequest = this.nestedAppAuthAdapter.toNaaTokenRequest(request);
95
+ const reqTimestamp = TimeUtils.nowSeconds();
96
+ const response = await this.bridgeProxy.getTokenSilent(naaRequest);
97
+ const result = this.nestedAppAuthAdapter.fromNaaTokenResponse(naaRequest, response, reqTimestamp);
98
+ this.operatingContext.setActiveAccount(result.account);
99
+ this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_SUCCESS, InteractionType.Silent, result);
100
+ ssoSilentMeasurement?.add({
101
+ accessTokenSize: result.accessToken.length,
102
+ idTokenSize: result.idToken.length,
103
+ });
104
+ ssoSilentMeasurement?.end({
105
+ success: true,
106
+ requestId: result.requestId,
107
+ });
108
+ return result;
109
+ }
110
+ catch (e) {
111
+ const error = this.nestedAppAuthAdapter.fromBridgeError(e);
112
+ this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_FAILURE, InteractionType.Silent, null, e);
113
+ ssoSilentMeasurement?.end({
114
+ errorCode: error.errorCode,
115
+ subErrorCode: error.subError,
116
+ success: false,
117
+ });
118
+ throw error;
119
+ }
120
+ }
121
+ async acquireTokenPopup(request) {
122
+ return this.acquireTokenInteractive(request);
123
+ }
124
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
125
+ acquireTokenRedirect(request) {
126
+ throw NestedAppAuthError.createUnsupportedError();
127
+ }
128
+ async acquireTokenSilent(silentRequest) {
129
+ return this.acquireTokenSilentInternal(silentRequest);
130
+ }
131
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
132
+ acquireTokenByCode(request // eslint-disable-line @typescript-eslint/no-unused-vars
133
+ ) {
134
+ throw NestedAppAuthError.createUnsupportedError();
135
+ }
136
+ acquireTokenNative(request, apiId, // eslint-disable-line @typescript-eslint/no-unused-vars
137
+ accountId // eslint-disable-line @typescript-eslint/no-unused-vars
138
+ ) {
139
+ throw NestedAppAuthError.createUnsupportedError();
140
+ }
141
+ acquireTokenByRefreshToken(commonRequest, // eslint-disable-line @typescript-eslint/no-unused-vars
142
+ silentRequest // eslint-disable-line @typescript-eslint/no-unused-vars
143
+ ) {
144
+ throw NestedAppAuthError.createUnsupportedError();
145
+ }
146
+ /**
147
+ * Adds event callbacks to array
148
+ * @param callback
149
+ */
150
+ addEventCallback(callback) {
151
+ return this.eventHandler.addEventCallback(callback);
152
+ }
153
+ /**
154
+ * Removes callback with provided id from callback array
155
+ * @param callbackId
156
+ */
157
+ removeEventCallback(callbackId) {
158
+ this.eventHandler.removeEventCallback(callbackId);
159
+ }
160
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
161
+ addPerformanceCallback(callback) {
162
+ throw NestedAppAuthError.createUnsupportedError();
163
+ }
164
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
165
+ removePerformanceCallback(callbackId) {
166
+ throw NestedAppAuthError.createUnsupportedError();
167
+ }
168
+ enableAccountStorageEvents() {
169
+ throw NestedAppAuthError.createUnsupportedError();
170
+ }
171
+ disableAccountStorageEvents() {
172
+ throw NestedAppAuthError.createUnsupportedError();
173
+ }
174
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
175
+ getAccount(accountFilter) {
176
+ throw NestedAppAuthError.createUnsupportedError();
177
+ // TODO: Look at standard implementation
178
+ }
179
+ getAccountByHomeId(homeAccountId) {
180
+ const currentAccount = this.operatingContext.getActiveAccount();
181
+ if (currentAccount !== undefined) {
182
+ if (currentAccount.homeAccountId === homeAccountId) {
183
+ return this.nestedAppAuthAdapter.fromNaaAccountInfo(currentAccount);
184
+ }
185
+ else {
186
+ return null;
187
+ }
188
+ }
189
+ else {
190
+ return null;
191
+ }
192
+ }
193
+ getAccountByLocalId(localId) {
194
+ const currentAccount = this.operatingContext.getActiveAccount();
195
+ if (currentAccount !== undefined) {
196
+ if (currentAccount.localAccountId === localId) {
197
+ return this.nestedAppAuthAdapter.fromNaaAccountInfo(currentAccount);
198
+ }
199
+ else {
200
+ return null;
201
+ }
202
+ }
203
+ else {
204
+ return null;
205
+ }
206
+ }
207
+ getAccountByUsername(userName) {
208
+ const currentAccount = this.operatingContext.getActiveAccount();
209
+ if (currentAccount !== undefined) {
210
+ if (currentAccount.username === userName) {
211
+ return this.nestedAppAuthAdapter.fromNaaAccountInfo(currentAccount);
212
+ }
213
+ else {
214
+ return null;
215
+ }
216
+ }
217
+ else {
218
+ return null;
219
+ }
220
+ }
221
+ getAllAccounts() {
222
+ const currentAccount = this.operatingContext.getActiveAccount();
223
+ if (currentAccount !== undefined) {
224
+ return [
225
+ this.nestedAppAuthAdapter.fromNaaAccountInfo(currentAccount),
226
+ ];
227
+ }
228
+ else {
229
+ return [];
230
+ }
231
+ }
232
+ handleRedirectPromise(hash // eslint-disable-line @typescript-eslint/no-unused-vars
233
+ ) {
234
+ throw NestedAppAuthError.createUnsupportedError();
235
+ }
236
+ loginPopup(request // eslint-disable-line @typescript-eslint/no-unused-vars
237
+ ) {
238
+ if (request !== undefined) {
239
+ return this.acquireTokenInteractive(request);
240
+ }
241
+ else {
242
+ throw NestedAppAuthError.createUnsupportedError();
243
+ }
244
+ }
245
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
246
+ loginRedirect(request) {
247
+ throw NestedAppAuthError.createUnsupportedError();
248
+ }
249
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
250
+ logout(logoutRequest) {
251
+ throw NestedAppAuthError.createUnsupportedError();
252
+ }
253
+ logoutRedirect(logoutRequest // eslint-disable-line @typescript-eslint/no-unused-vars
254
+ ) {
255
+ throw NestedAppAuthError.createUnsupportedError();
256
+ }
257
+ logoutPopup(logoutRequest // eslint-disable-line @typescript-eslint/no-unused-vars
258
+ ) {
259
+ throw NestedAppAuthError.createUnsupportedError();
260
+ }
261
+ ssoSilent(
262
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
263
+ request) {
264
+ return this.acquireTokenSilentInternal(request);
265
+ }
266
+ getTokenCache() {
267
+ throw NestedAppAuthError.createUnsupportedError();
268
+ }
269
+ /**
270
+ * Returns the logger instance
271
+ */
272
+ getLogger() {
273
+ return this.logger;
274
+ }
275
+ /**
276
+ * Replaces the default logger set in configurations with new Logger with new configurations
277
+ * @param logger Logger instance
278
+ */
279
+ setLogger(logger) {
280
+ this.logger = logger;
281
+ }
282
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
283
+ setActiveAccount(account) {
284
+ /*
285
+ * StandardController uses this to allow the developer to set the active account
286
+ * in the nested app auth scenario the active account is controlled by the app hosting the nested app
287
+ */
288
+ this.logger.warning("nestedAppAuth does not support setActiveAccount");
289
+ return;
290
+ }
291
+ getActiveAccount() {
292
+ const currentAccount = this.operatingContext.getActiveAccount();
293
+ if (currentAccount !== undefined) {
294
+ return this.nestedAppAuthAdapter.fromNaaAccountInfo(currentAccount);
295
+ }
296
+ else {
297
+ return null;
298
+ }
299
+ }
300
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
301
+ initializeWrapperLibrary(sku, version) {
302
+ /*
303
+ * Standard controller uses this to set the sku and version of the wrapper library in the storage
304
+ * we do nothing here
305
+ */
306
+ return;
307
+ }
308
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
309
+ setNavigationClient(navigationClient) {
310
+ this.logger.warning("setNavigationClient is not supported in nested app auth");
311
+ }
312
+ getConfiguration() {
313
+ return this.config;
314
+ }
315
+ isBrowserEnv() {
316
+ return this.operatingContext.isBrowserEnvironment();
317
+ }
318
+ getBrowserCrypto() {
319
+ return this.browserCrypto;
320
+ }
321
+ getPerformanceClient() {
322
+ throw NestedAppAuthError.createUnsupportedError();
323
+ }
324
+ getRedirectResponse() {
325
+ throw NestedAppAuthError.createUnsupportedError();
326
+ }
327
+ preflightBrowserEnvironmentCheck(interactionType, // eslint-disable-line @typescript-eslint/no-unused-vars
328
+ setInteractionInProgress // eslint-disable-line @typescript-eslint/no-unused-vars
329
+ ) {
330
+ throw NestedAppAuthError.createUnsupportedError();
331
+ }
332
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
333
+ async clearCache(logoutRequest) {
334
+ throw NestedAppAuthError.createUnsupportedError();
335
+ }
336
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
337
+ async hydrateCache(
338
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
339
+ result,
340
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
341
+ request) {
342
+ throw NestedAppAuthError.createUnsupportedError();
343
+ }
342
344
  }
343
345
 
344
346
  export { NestedAppAuthController };