@azure/msal-browser 3.13.0 → 3.14.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.
- package/dist/app/IPublicClientApplication.d.ts +2 -1
- package/dist/app/IPublicClientApplication.d.ts.map +1 -1
- package/dist/app/IPublicClientApplication.mjs +4 -1
- package/dist/app/IPublicClientApplication.mjs.map +1 -1
- package/dist/app/PublicClientApplication.mjs +1 -1
- package/dist/app/PublicClientNext.mjs +1 -1
- package/dist/broker/nativeBroker/NativeMessageHandler.mjs +1 -1
- package/dist/broker/nativeBroker/NativeStatusCodes.mjs +1 -1
- package/dist/cache/AsyncMemoryStorage.mjs +1 -1
- package/dist/cache/BrowserCacheManager.mjs +1 -1
- package/dist/cache/BrowserStorage.mjs +1 -1
- package/dist/cache/DatabaseStorage.mjs +1 -1
- package/dist/cache/MemoryStorage.mjs +1 -1
- package/dist/cache/TokenCache.mjs +1 -1
- package/dist/config/Configuration.mjs +1 -1
- package/dist/controllers/ControllerFactory.d.ts.map +1 -1
- package/dist/controllers/ControllerFactory.mjs +2 -3
- package/dist/controllers/ControllerFactory.mjs.map +1 -1
- package/dist/controllers/NestedAppAuthController.mjs +1 -1
- package/dist/controllers/StandardController.d.ts.map +1 -1
- package/dist/controllers/StandardController.mjs +74 -37
- package/dist/controllers/StandardController.mjs.map +1 -1
- package/dist/controllers/UnknownOperatingContextController.mjs +1 -1
- package/dist/crypto/BrowserCrypto.mjs +1 -1
- package/dist/crypto/CryptoOps.mjs +1 -1
- package/dist/crypto/PkceGenerator.mjs +1 -1
- package/dist/crypto/SignedHttpRequest.mjs +1 -1
- package/dist/encode/Base64Decode.mjs +1 -1
- package/dist/encode/Base64Encode.mjs +1 -1
- package/dist/error/BrowserAuthError.mjs +1 -1
- package/dist/error/BrowserAuthErrorCodes.mjs +1 -1
- package/dist/error/BrowserConfigurationAuthError.mjs +1 -1
- package/dist/error/BrowserConfigurationAuthErrorCodes.mjs +1 -1
- package/dist/error/NativeAuthError.mjs +1 -1
- package/dist/error/NativeAuthErrorCodes.mjs +1 -1
- package/dist/error/NestedAppAuthError.mjs +1 -1
- package/dist/event/EventHandler.mjs +1 -1
- package/dist/event/EventMessage.mjs +1 -1
- package/dist/event/EventType.mjs +1 -1
- package/dist/index.mjs +1 -1
- package/dist/interaction_client/BaseInteractionClient.mjs +1 -1
- package/dist/interaction_client/HybridSpaAuthorizationCodeClient.mjs +1 -1
- package/dist/interaction_client/NativeInteractionClient.mjs +1 -1
- package/dist/interaction_client/PopupClient.mjs +1 -1
- package/dist/interaction_client/RedirectClient.d.ts +4 -5
- package/dist/interaction_client/RedirectClient.d.ts.map +1 -1
- package/dist/interaction_client/RedirectClient.mjs +5 -8
- package/dist/interaction_client/RedirectClient.mjs.map +1 -1
- package/dist/interaction_client/SilentAuthCodeClient.mjs +1 -1
- package/dist/interaction_client/SilentCacheClient.mjs +1 -1
- package/dist/interaction_client/SilentIframeClient.mjs +1 -1
- package/dist/interaction_client/SilentRefreshClient.mjs +1 -1
- package/dist/interaction_client/StandardInteractionClient.mjs +1 -1
- package/dist/interaction_handler/InteractionHandler.mjs +1 -1
- package/dist/interaction_handler/RedirectHandler.mjs +1 -1
- package/dist/interaction_handler/SilentHandler.mjs +1 -1
- package/dist/naa/BridgeError.mjs +1 -1
- package/dist/naa/BridgeProxy.mjs +1 -1
- package/dist/naa/BridgeStatusCode.mjs +1 -1
- package/dist/naa/mapping/NestedAppAuthAdapter.mjs +1 -1
- package/dist/navigation/NavigationClient.mjs +1 -1
- package/dist/network/FetchClient.mjs +1 -1
- package/dist/operatingcontext/BaseOperatingContext.mjs +1 -1
- package/dist/operatingcontext/StandardOperatingContext.mjs +1 -1
- package/dist/operatingcontext/TeamsAppOperatingContext.d.ts.map +1 -1
- package/dist/operatingcontext/TeamsAppOperatingContext.mjs +10 -11
- package/dist/operatingcontext/TeamsAppOperatingContext.mjs.map +1 -1
- package/dist/operatingcontext/UnknownOperatingContext.mjs +1 -1
- package/dist/packageMetadata.d.ts +1 -1
- package/dist/packageMetadata.mjs +2 -2
- package/dist/request/RequestHelpers.mjs +1 -1
- package/dist/response/ResponseHandler.mjs +1 -1
- package/dist/telemetry/BrowserPerformanceClient.mjs +1 -1
- package/dist/telemetry/BrowserPerformanceMeasurement.mjs +1 -1
- package/dist/utils/BrowserConstants.mjs +1 -1
- package/dist/utils/BrowserProtocolUtils.mjs +1 -1
- package/dist/utils/BrowserUtils.d.ts +3 -0
- package/dist/utils/BrowserUtils.d.ts.map +1 -1
- package/dist/utils/BrowserUtils.mjs +2 -1
- package/dist/utils/BrowserUtils.mjs.map +1 -1
- package/lib/msal-browser.cjs +213 -141
- package/lib/msal-browser.cjs.map +1 -1
- package/lib/msal-browser.js +213 -141
- package/lib/msal-browser.js.map +1 -1
- package/lib/msal-browser.min.js +61 -60
- package/package.json +2 -2
- package/src/app/IPublicClientApplication.ts +5 -0
- package/src/controllers/ControllerFactory.ts +1 -4
- package/src/controllers/StandardController.ts +79 -45
- package/src/interaction_client/RedirectClient.ts +6 -12
- package/src/operatingcontext/TeamsAppOperatingContext.ts +14 -8
- package/src/packageMetadata.ts +1 -1
- package/src/utils/BrowserUtils.ts +4 -1
package/package.json
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"type": "git",
|
|
11
11
|
"url": "https://github.com/AzureAD/microsoft-authentication-library-for-js.git"
|
|
12
12
|
},
|
|
13
|
-
"version": "3.
|
|
13
|
+
"version": "3.14.0",
|
|
14
14
|
"description": "Microsoft Authentication Library for js",
|
|
15
15
|
"keywords": [
|
|
16
16
|
"implicit",
|
|
@@ -101,6 +101,6 @@
|
|
|
101
101
|
"typescript": "^4.9.5"
|
|
102
102
|
},
|
|
103
103
|
"dependencies": {
|
|
104
|
-
"@azure/msal-common": "14.
|
|
104
|
+
"@azure/msal-common": "14.10.0"
|
|
105
105
|
}
|
|
106
106
|
}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import {
|
|
7
|
+
AccountFilter,
|
|
7
8
|
AccountInfo,
|
|
8
9
|
Logger,
|
|
9
10
|
PerformanceCallbackFunction,
|
|
@@ -43,6 +44,7 @@ export interface IPublicClientApplication {
|
|
|
43
44
|
removePerformanceCallback(callbackId: string): boolean;
|
|
44
45
|
enableAccountStorageEvents(): void;
|
|
45
46
|
disableAccountStorageEvents(): void;
|
|
47
|
+
getAccount(accountFilter: AccountFilter): AccountInfo | null;
|
|
46
48
|
getAccountByHomeId(homeAccountId: string): AccountInfo | null;
|
|
47
49
|
getAccountByLocalId(localId: string): AccountInfo | null;
|
|
48
50
|
getAccountByUsername(userName: string): AccountInfo | null;
|
|
@@ -113,6 +115,9 @@ export const stubbedPublicClientApplication: IPublicClientApplication = {
|
|
|
113
115
|
getAllAccounts: () => {
|
|
114
116
|
return [];
|
|
115
117
|
},
|
|
118
|
+
getAccount: () => {
|
|
119
|
+
return null;
|
|
120
|
+
},
|
|
116
121
|
getAccountByHomeId: () => {
|
|
117
122
|
return null;
|
|
118
123
|
},
|
|
@@ -29,10 +29,7 @@ export async function createController(
|
|
|
29
29
|
|
|
30
30
|
await Promise.all(operatingContexts);
|
|
31
31
|
|
|
32
|
-
if (
|
|
33
|
-
teamsApp.isAvailable() &&
|
|
34
|
-
teamsApp.getConfig().auth.supportsNestedAppAuth
|
|
35
|
-
) {
|
|
32
|
+
if (teamsApp.isAvailable()) {
|
|
36
33
|
const controller = await import("./NestedAppAuthController");
|
|
37
34
|
return controller.NestedAppAuthController.createController(teamsApp);
|
|
38
35
|
} else if (standard.isAvailable()) {
|
|
@@ -84,6 +84,22 @@ import { ClearCacheRequest } from "../request/ClearCacheRequest";
|
|
|
84
84
|
import { createNewGuid } from "../crypto/BrowserCrypto";
|
|
85
85
|
import { initializeSilentRequest } from "../request/RequestHelpers";
|
|
86
86
|
|
|
87
|
+
function getAccountType(
|
|
88
|
+
account?: AccountInfo
|
|
89
|
+
): "AAD" | "MSA" | "B2C" | undefined {
|
|
90
|
+
const idTokenClaims = account?.idTokenClaims;
|
|
91
|
+
if (idTokenClaims?.tfp || idTokenClaims?.acr) {
|
|
92
|
+
return "B2C";
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
if (!idTokenClaims?.tid) {
|
|
96
|
+
return undefined;
|
|
97
|
+
} else if (idTokenClaims?.tid === "9188040d-6c67-4c5b-b112-36a304b66dad") {
|
|
98
|
+
return "MSA";
|
|
99
|
+
}
|
|
100
|
+
return "AAD";
|
|
101
|
+
}
|
|
102
|
+
|
|
87
103
|
export class StandardController implements IController {
|
|
88
104
|
// OperatingContext
|
|
89
105
|
protected readonly operatingContext: StandardOperatingContext;
|
|
@@ -142,7 +158,7 @@ export class StandardController implements IController {
|
|
|
142
158
|
>;
|
|
143
159
|
|
|
144
160
|
// Active Iframe request
|
|
145
|
-
private activeIframeRequest: [Promise<
|
|
161
|
+
private activeIframeRequest: [Promise<boolean>, string] | undefined;
|
|
146
162
|
|
|
147
163
|
private ssoSilentMeasurement?: InProgressPerformanceEvent;
|
|
148
164
|
private acquireTokenByCodeAsyncMeasurement?: InProgressPerformanceEvent;
|
|
@@ -439,11 +455,7 @@ export class StandardController implements IController {
|
|
|
439
455
|
this.logger,
|
|
440
456
|
this.performanceClient,
|
|
441
457
|
rootMeasurement.event.correlationId
|
|
442
|
-
)(
|
|
443
|
-
hash,
|
|
444
|
-
this.performanceClient,
|
|
445
|
-
rootMeasurement.event.correlationId
|
|
446
|
-
);
|
|
458
|
+
)(hash, rootMeasurement);
|
|
447
459
|
}
|
|
448
460
|
|
|
449
461
|
return redirectResponse
|
|
@@ -472,13 +484,26 @@ export class StandardController implements IController {
|
|
|
472
484
|
"handleRedirectResponse returned result, acquire token success"
|
|
473
485
|
);
|
|
474
486
|
}
|
|
475
|
-
rootMeasurement.end({
|
|
487
|
+
rootMeasurement.end({
|
|
488
|
+
success: true,
|
|
489
|
+
accountType: getAccountType(result.account),
|
|
490
|
+
});
|
|
491
|
+
} else {
|
|
492
|
+
/*
|
|
493
|
+
* Instrument an event only if an error code is set. Otherwise, discard it when the redirect response
|
|
494
|
+
* is empty and the error code is missing.
|
|
495
|
+
*/
|
|
496
|
+
if (rootMeasurement.event.errorCode) {
|
|
497
|
+
rootMeasurement.end({ success: false });
|
|
498
|
+
} else {
|
|
499
|
+
rootMeasurement.discard();
|
|
500
|
+
}
|
|
476
501
|
}
|
|
502
|
+
|
|
477
503
|
this.eventHandler.emitEvent(
|
|
478
504
|
EventType.HANDLE_REDIRECT_END,
|
|
479
505
|
InteractionType.Redirect
|
|
480
506
|
);
|
|
481
|
-
rootMeasurement.end({ success: false });
|
|
482
507
|
|
|
483
508
|
return result;
|
|
484
509
|
})
|
|
@@ -631,6 +656,11 @@ export class StandardController implements IController {
|
|
|
631
656
|
correlationId
|
|
632
657
|
);
|
|
633
658
|
|
|
659
|
+
atPopupMeasurement.add({
|
|
660
|
+
scenarioId: request.scenarioId,
|
|
661
|
+
accountType: getAccountType(request.account),
|
|
662
|
+
});
|
|
663
|
+
|
|
634
664
|
try {
|
|
635
665
|
this.logger.verbose("acquireTokenPopup called", correlationId);
|
|
636
666
|
BrowserUtils.preflightCheck(this.initialized);
|
|
@@ -672,6 +702,7 @@ export class StandardController implements IController {
|
|
|
672
702
|
success: true,
|
|
673
703
|
isNativeBroker: true,
|
|
674
704
|
requestId: response.requestId,
|
|
705
|
+
accountType: getAccountType(response.account),
|
|
675
706
|
});
|
|
676
707
|
return response;
|
|
677
708
|
})
|
|
@@ -721,13 +752,12 @@ export class StandardController implements IController {
|
|
|
721
752
|
);
|
|
722
753
|
}
|
|
723
754
|
|
|
724
|
-
atPopupMeasurement.add({
|
|
725
|
-
accessTokenSize: result.accessToken.length,
|
|
726
|
-
idTokenSize: result.idToken.length,
|
|
727
|
-
});
|
|
728
755
|
atPopupMeasurement.end({
|
|
729
756
|
success: true,
|
|
730
757
|
requestId: result.requestId,
|
|
758
|
+
accessTokenSize: result.accessToken.length,
|
|
759
|
+
idTokenSize: result.idToken.length,
|
|
760
|
+
accountType: getAccountType(result.account),
|
|
731
761
|
});
|
|
732
762
|
return result;
|
|
733
763
|
})
|
|
@@ -811,6 +841,11 @@ export class StandardController implements IController {
|
|
|
811
841
|
this.ssoSilentMeasurement?.increment({
|
|
812
842
|
visibilityChangeCount: 0,
|
|
813
843
|
});
|
|
844
|
+
this.ssoSilentMeasurement?.add({
|
|
845
|
+
scenarioId: request.scenarioId,
|
|
846
|
+
accountType: getAccountType(request.account),
|
|
847
|
+
});
|
|
848
|
+
|
|
814
849
|
document.addEventListener(
|
|
815
850
|
"visibilitychange",
|
|
816
851
|
this.trackPageVisibilityWithMeasurement
|
|
@@ -853,14 +888,13 @@ export class StandardController implements IController {
|
|
|
853
888
|
InteractionType.Silent,
|
|
854
889
|
response
|
|
855
890
|
);
|
|
856
|
-
this.ssoSilentMeasurement?.add({
|
|
857
|
-
accessTokenSize: response.accessToken.length,
|
|
858
|
-
idTokenSize: response.idToken.length,
|
|
859
|
-
});
|
|
860
891
|
this.ssoSilentMeasurement?.end({
|
|
861
892
|
success: true,
|
|
862
893
|
isNativeBroker: response.fromNativeBroker,
|
|
863
894
|
requestId: response.requestId,
|
|
895
|
+
accessTokenSize: response.accessToken.length,
|
|
896
|
+
idTokenSize: response.idToken.length,
|
|
897
|
+
accountType: getAccountType(response.account),
|
|
864
898
|
});
|
|
865
899
|
return response;
|
|
866
900
|
})
|
|
@@ -912,6 +946,7 @@ export class StandardController implements IController {
|
|
|
912
946
|
PerformanceEvents.AcquireTokenByCode,
|
|
913
947
|
correlationId
|
|
914
948
|
);
|
|
949
|
+
atbcMeasurement.add({ scenarioId: request.scenarioId });
|
|
915
950
|
|
|
916
951
|
try {
|
|
917
952
|
if (request.code && request.nativeAccountId) {
|
|
@@ -938,14 +973,13 @@ export class StandardController implements IController {
|
|
|
938
973
|
result
|
|
939
974
|
);
|
|
940
975
|
this.hybridAuthCodeResponses.delete(hybridAuthCode);
|
|
941
|
-
atbcMeasurement.add({
|
|
942
|
-
accessTokenSize: result.accessToken.length,
|
|
943
|
-
idTokenSize: result.idToken.length,
|
|
944
|
-
});
|
|
945
976
|
atbcMeasurement.end({
|
|
946
977
|
success: true,
|
|
947
978
|
isNativeBroker: result.fromNativeBroker,
|
|
948
979
|
requestId: result.requestId,
|
|
980
|
+
accessTokenSize: result.accessToken.length,
|
|
981
|
+
idTokenSize: result.idToken.length,
|
|
982
|
+
accountType: getAccountType(result.account),
|
|
949
983
|
});
|
|
950
984
|
return result;
|
|
951
985
|
})
|
|
@@ -976,7 +1010,7 @@ export class StandardController implements IController {
|
|
|
976
1010
|
return await response;
|
|
977
1011
|
} else if (request.nativeAccountId) {
|
|
978
1012
|
if (this.canUseNative(request, request.nativeAccountId)) {
|
|
979
|
-
|
|
1013
|
+
const result = await this.acquireTokenNative(
|
|
980
1014
|
{
|
|
981
1015
|
...request,
|
|
982
1016
|
correlationId,
|
|
@@ -993,6 +1027,11 @@ export class StandardController implements IController {
|
|
|
993
1027
|
}
|
|
994
1028
|
throw e;
|
|
995
1029
|
});
|
|
1030
|
+
atbcMeasurement.end({
|
|
1031
|
+
accountType: getAccountType(result.account),
|
|
1032
|
+
success: true,
|
|
1033
|
+
});
|
|
1034
|
+
return result;
|
|
996
1035
|
} else {
|
|
997
1036
|
throw createBrowserAuthError(
|
|
998
1037
|
BrowserAuthErrorCodes.unableToAcquireTokenFromNativePlatform
|
|
@@ -1856,6 +1895,7 @@ export class StandardController implements IController {
|
|
|
1856
1895
|
);
|
|
1857
1896
|
atsMeasurement.add({
|
|
1858
1897
|
cacheLookupPolicy: request.cacheLookupPolicy,
|
|
1898
|
+
scenarioId: request.scenarioId,
|
|
1859
1899
|
});
|
|
1860
1900
|
|
|
1861
1901
|
BrowserUtils.preflightCheck(this.initialized);
|
|
@@ -1865,6 +1905,7 @@ export class StandardController implements IController {
|
|
|
1865
1905
|
if (!account) {
|
|
1866
1906
|
throw createBrowserAuthError(BrowserAuthErrorCodes.noAccountError);
|
|
1867
1907
|
}
|
|
1908
|
+
atsMeasurement.add({ accountType: getAccountType(account) });
|
|
1868
1909
|
|
|
1869
1910
|
const thumbprint: RequestThumbprint = {
|
|
1870
1911
|
clientId: this.config.auth.clientId,
|
|
@@ -1904,16 +1945,14 @@ export class StandardController implements IController {
|
|
|
1904
1945
|
)
|
|
1905
1946
|
.then((result) => {
|
|
1906
1947
|
this.activeSilentTokenRequests.delete(silentRequestKey);
|
|
1907
|
-
atsMeasurement.add({
|
|
1908
|
-
accessTokenSize: result.accessToken.length,
|
|
1909
|
-
idTokenSize: result.idToken.length,
|
|
1910
|
-
});
|
|
1911
1948
|
atsMeasurement.end({
|
|
1912
1949
|
success: true,
|
|
1913
1950
|
fromCache: result.fromCache,
|
|
1914
1951
|
isNativeBroker: result.fromNativeBroker,
|
|
1915
1952
|
cacheLookupPolicy: request.cacheLookupPolicy,
|
|
1916
1953
|
requestId: result.requestId,
|
|
1954
|
+
accessTokenSize: result.accessToken.length,
|
|
1955
|
+
idTokenSize: result.idToken.length,
|
|
1917
1956
|
});
|
|
1918
1957
|
return result;
|
|
1919
1958
|
})
|
|
@@ -2000,13 +2039,11 @@ export class StandardController implements IController {
|
|
|
2000
2039
|
|
|
2001
2040
|
if (shouldTryToResolveSilently) {
|
|
2002
2041
|
if (!this.activeIframeRequest) {
|
|
2003
|
-
let _resolve: () => void
|
|
2004
|
-
_reject: (reason?: AuthError | Error) => void;
|
|
2042
|
+
let _resolve: (result: boolean) => void;
|
|
2005
2043
|
// Always set the active request tracker immediately after checking it to prevent races
|
|
2006
2044
|
this.activeIframeRequest = [
|
|
2007
|
-
new Promise((resolve
|
|
2045
|
+
new Promise((resolve) => {
|
|
2008
2046
|
_resolve = resolve;
|
|
2009
|
-
_reject = reject;
|
|
2010
2047
|
}),
|
|
2011
2048
|
silentRequest.correlationId,
|
|
2012
2049
|
];
|
|
@@ -2022,11 +2059,11 @@ export class StandardController implements IController {
|
|
|
2022
2059
|
silentRequest.correlationId
|
|
2023
2060
|
)(silentRequest)
|
|
2024
2061
|
.then((iframeResult) => {
|
|
2025
|
-
_resolve();
|
|
2062
|
+
_resolve(true);
|
|
2026
2063
|
return iframeResult;
|
|
2027
2064
|
})
|
|
2028
2065
|
.catch((e) => {
|
|
2029
|
-
|
|
2066
|
+
_resolve(false);
|
|
2030
2067
|
throw e;
|
|
2031
2068
|
})
|
|
2032
2069
|
.finally(() => {
|
|
@@ -2048,20 +2085,11 @@ export class StandardController implements IController {
|
|
|
2048
2085
|
awaitIframeCorrelationId: activeCorrelationId,
|
|
2049
2086
|
});
|
|
2050
2087
|
|
|
2051
|
-
|
|
2052
|
-
|
|
2053
|
-
|
|
2054
|
-
success: false,
|
|
2055
|
-
});
|
|
2056
|
-
this.logger.info(
|
|
2057
|
-
`Iframe request with correlationId: ${activeCorrelationId} failed. Interaction is required.`
|
|
2058
|
-
);
|
|
2059
|
-
// If previous iframe request failed, it's unlikely to succeed this time. Throw original error.
|
|
2060
|
-
throw refreshTokenError;
|
|
2088
|
+
const activePromiseResult = await activePromise;
|
|
2089
|
+
awaitConcurrentIframeMeasure.end({
|
|
2090
|
+
success: activePromiseResult,
|
|
2061
2091
|
});
|
|
2062
|
-
|
|
2063
|
-
return activePromise.then(() => {
|
|
2064
|
-
awaitConcurrentIframeMeasure.end({ success: true });
|
|
2092
|
+
if (activePromiseResult) {
|
|
2065
2093
|
this.logger.verbose(
|
|
2066
2094
|
`Parallel iframe request with correlationId: ${activeCorrelationId} succeeded. Retrying cache and/or RT redemption`,
|
|
2067
2095
|
silentRequest.correlationId
|
|
@@ -2071,7 +2099,13 @@ export class StandardController implements IController {
|
|
|
2071
2099
|
silentRequest,
|
|
2072
2100
|
cacheLookupPolicy
|
|
2073
2101
|
);
|
|
2074
|
-
}
|
|
2102
|
+
} else {
|
|
2103
|
+
this.logger.info(
|
|
2104
|
+
`Iframe request with correlationId: ${activeCorrelationId} failed. Interaction is required.`
|
|
2105
|
+
);
|
|
2106
|
+
// If previous iframe request failed, it's unlikely to succeed this time. Throw original error.
|
|
2107
|
+
throw refreshTokenError;
|
|
2108
|
+
}
|
|
2075
2109
|
} else {
|
|
2076
2110
|
// Cache policy set to skip and another iframe request is already in progress
|
|
2077
2111
|
this.logger.warning(
|
|
@@ -21,6 +21,7 @@ import {
|
|
|
21
21
|
invokeAsync,
|
|
22
22
|
ServerResponseType,
|
|
23
23
|
UrlUtils,
|
|
24
|
+
InProgressPerformanceEvent,
|
|
24
25
|
} from "@azure/msal-common";
|
|
25
26
|
import { StandardInteractionClient } from "./StandardInteractionClient";
|
|
26
27
|
import {
|
|
@@ -190,14 +191,12 @@ export class RedirectClient extends StandardInteractionClient {
|
|
|
190
191
|
* Checks if navigateToLoginRequestUrl is set, and:
|
|
191
192
|
* - if true, performs logic to cache and navigate
|
|
192
193
|
* - if false, handles hash string and parses response
|
|
193
|
-
* @param hash {string
|
|
194
|
-
* @param
|
|
195
|
-
* @param correlationId {string?} correlation identifier
|
|
194
|
+
* @param hash {string} url hash
|
|
195
|
+
* @param parentMeasurement {InProgressPerformanceEvent} parent measurement
|
|
196
196
|
*/
|
|
197
197
|
async handleRedirectPromise(
|
|
198
|
-
hash
|
|
199
|
-
|
|
200
|
-
correlationId?: string
|
|
198
|
+
hash: string = "",
|
|
199
|
+
parentMeasurement: InProgressPerformanceEvent
|
|
201
200
|
): Promise<AuthenticationResult | null> {
|
|
202
201
|
const serverTelemetryManager = this.initializeServerTelemetryManager(
|
|
203
202
|
ApiId.handleRedirectPromise
|
|
@@ -220,12 +219,7 @@ export class RedirectClient extends StandardInteractionClient {
|
|
|
220
219
|
this.browserStorage.cleanRequestByInteractionType(
|
|
221
220
|
InteractionType.Redirect
|
|
222
221
|
);
|
|
223
|
-
|
|
224
|
-
performanceClient?.addFields(
|
|
225
|
-
{ errorCode: "no_server_response" },
|
|
226
|
-
correlationId
|
|
227
|
-
);
|
|
228
|
-
}
|
|
222
|
+
parentMeasurement.event.errorCode = "no_server_response";
|
|
229
223
|
return null;
|
|
230
224
|
}
|
|
231
225
|
|
|
@@ -61,6 +61,11 @@ export class TeamsAppOperatingContext extends BaseOperatingContext {
|
|
|
61
61
|
* TODO: Add implementation to check for presence of inject Nested App Auth Bridge JavaScript interface
|
|
62
62
|
*
|
|
63
63
|
*/
|
|
64
|
+
|
|
65
|
+
if (!this.getConfig().auth.supportsNestedAppAuth) {
|
|
66
|
+
return false;
|
|
67
|
+
}
|
|
68
|
+
|
|
64
69
|
try {
|
|
65
70
|
if (typeof window !== "undefined") {
|
|
66
71
|
const bridgeProxy: IBridgeProxy = await BridgeProxy.create();
|
|
@@ -74,18 +79,19 @@ export class TeamsAppOperatingContext extends BaseOperatingContext {
|
|
|
74
79
|
this.activeAccount =
|
|
75
80
|
await bridgeProxy.getActiveAccount();
|
|
76
81
|
}
|
|
77
|
-
} catch
|
|
78
|
-
|
|
82
|
+
} catch {
|
|
83
|
+
// Ignore errors
|
|
79
84
|
}
|
|
80
85
|
this.bridgeProxy = bridgeProxy;
|
|
81
86
|
this.available = bridgeProxy !== undefined;
|
|
82
|
-
} else {
|
|
83
|
-
this.available = false;
|
|
84
87
|
}
|
|
85
|
-
} catch (
|
|
86
|
-
this.
|
|
87
|
-
|
|
88
|
-
|
|
88
|
+
} catch (ex) {
|
|
89
|
+
this.logger.infoPii(
|
|
90
|
+
`Could not initialize Nested App Auth bridge (${ex})`
|
|
91
|
+
);
|
|
89
92
|
}
|
|
93
|
+
|
|
94
|
+
this.logger.info(`Nested App Auth Bridge available: ${this.available}`);
|
|
95
|
+
return this.available;
|
|
90
96
|
}
|
|
91
97
|
}
|
package/src/packageMetadata.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import { UrlString } from "@azure/msal-common";
|
|
6
|
+
import { UrlString, invoke, invokeAsync } from "@azure/msal-common";
|
|
7
7
|
import {
|
|
8
8
|
createBrowserAuthError,
|
|
9
9
|
BrowserAuthErrorCodes,
|
|
@@ -206,3 +206,6 @@ export function preconnect(authority: string): void {
|
|
|
206
206
|
export function createGuid(): string {
|
|
207
207
|
return BrowserCrypto.createNewGuid();
|
|
208
208
|
}
|
|
209
|
+
|
|
210
|
+
export { invoke };
|
|
211
|
+
export { invokeAsync };
|