@azure/msal-browser 3.0.0-alpha.1 → 3.0.0-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.
- package/LICENSE +21 -21
- package/README.md +213 -213
- package/dist/app/IPublicClientApplication.d.ts +45 -45
- package/dist/app/IPublicClientApplication.js +96 -96
- package/dist/app/PublicClientApplication.d.ts +244 -244
- package/dist/app/PublicClientApplication.js +307 -307
- package/dist/broker/nativeBroker/NativeMessageHandler.d.ts +63 -63
- package/dist/broker/nativeBroker/NativeMessageHandler.js +255 -255
- package/dist/broker/nativeBroker/NativeRequest.d.ts +43 -43
- package/dist/broker/nativeBroker/NativeResponse.d.ts +48 -48
- package/dist/cache/AsyncMemoryStorage.d.ts +51 -51
- package/dist/cache/AsyncMemoryStorage.js +132 -132
- package/dist/cache/BrowserCacheManager.d.ts +376 -377
- package/dist/cache/BrowserCacheManager.d.ts.map +1 -1
- package/dist/cache/BrowserCacheManager.js +1275 -1276
- package/dist/cache/BrowserCacheManager.js.map +1 -1
- package/dist/cache/BrowserStorage.d.ts +11 -11
- package/dist/cache/BrowserStorage.js +35 -35
- package/dist/cache/CryptoKeyStore.d.ts +18 -17
- package/dist/cache/CryptoKeyStore.d.ts.map +1 -1
- package/dist/cache/CryptoKeyStore.js +40 -41
- package/dist/cache/CryptoKeyStore.js.map +1 -1
- package/dist/cache/DatabaseStorage.d.ts +56 -56
- package/dist/cache/DatabaseStorage.js +190 -190
- package/dist/cache/IAsyncMemoryStorage.d.ts +27 -27
- package/dist/cache/ITokenCache.d.ts +10 -10
- package/dist/cache/IWindowStorage.d.ts +27 -27
- package/dist/cache/MemoryStorage.d.ts +11 -11
- package/dist/cache/MemoryStorage.js +31 -31
- package/dist/cache/TokenCache.d.ts +76 -76
- package/dist/cache/TokenCache.js +225 -225
- package/dist/config/Configuration.d.ts +187 -203
- package/dist/config/Configuration.d.ts.map +1 -1
- package/dist/config/Configuration.js +97 -101
- package/dist/config/Configuration.js.map +1 -1
- package/dist/controllers/ControllerFactory.d.ts +9 -9
- package/dist/controllers/ControllerFactory.js +37 -37
- package/dist/controllers/IController.d.ts +66 -66
- package/dist/controllers/IController.d.ts.map +1 -1
- package/dist/controllers/StandardController.d.ts +413 -413
- package/dist/controllers/StandardController.d.ts.map +1 -1
- package/dist/controllers/StandardController.js +1277 -1272
- package/dist/controllers/StandardController.js.map +1 -1
- package/dist/crypto/BrowserCrypto.d.ts +49 -61
- package/dist/crypto/BrowserCrypto.d.ts.map +1 -1
- package/dist/crypto/BrowserCrypto.js +93 -134
- package/dist/crypto/BrowserCrypto.js.map +1 -1
- package/dist/crypto/CryptoOps.d.ts +72 -73
- package/dist/crypto/CryptoOps.d.ts.map +1 -1
- package/dist/crypto/CryptoOps.js +150 -150
- package/dist/crypto/CryptoOps.js.map +1 -1
- package/dist/crypto/GuidGenerator.d.ts +12 -12
- package/dist/crypto/GuidGenerator.js +96 -96
- package/dist/crypto/ISubtleCrypto.d.ts +9 -9
- package/dist/crypto/ModernBrowserCrypto.d.ts +9 -9
- package/dist/crypto/ModernBrowserCrypto.js +24 -24
- package/dist/crypto/PkceGenerator.d.ts +24 -24
- package/dist/crypto/PkceGenerator.js +58 -58
- package/dist/crypto/SignedHttpRequest.d.ts +30 -30
- package/dist/crypto/SignedHttpRequest.js +39 -39
- package/dist/encode/Base64Decode.d.ts +22 -22
- package/dist/encode/Base64Decode.js +73 -73
- package/dist/encode/Base64Encode.d.ts +31 -31
- package/dist/encode/Base64Encode.js +79 -79
- package/dist/error/BrowserAuthError.d.ts +382 -382
- package/dist/error/BrowserAuthError.js +483 -483
- package/dist/error/BrowserConfigurationAuthError.d.ts +70 -70
- package/dist/error/BrowserConfigurationAuthError.js +96 -96
- package/dist/error/NativeAuthError.d.ts +57 -56
- package/dist/error/NativeAuthError.d.ts.map +1 -1
- package/dist/error/NativeAuthError.js +93 -88
- package/dist/error/NativeAuthError.js.map +1 -1
- package/dist/event/EventHandler.d.ts +41 -41
- package/dist/event/EventHandler.js +119 -119
- package/dist/event/EventMessage.d.ts +25 -25
- package/dist/event/EventMessage.d.ts.map +1 -1
- package/dist/event/EventMessage.js +68 -67
- package/dist/event/EventMessage.js.map +1 -1
- package/dist/event/EventType.d.ts +28 -26
- package/dist/event/EventType.d.ts.map +1 -1
- package/dist/event/EventType.js +32 -32
- package/dist/event/EventType.js.map +1 -1
- package/dist/index.d.ts +35 -35
- package/dist/index.js +1 -1
- package/dist/interaction_client/BaseInteractionClient.d.ts +53 -52
- package/dist/interaction_client/BaseInteractionClient.d.ts.map +1 -1
- package/dist/interaction_client/BaseInteractionClient.js +151 -138
- package/dist/interaction_client/BaseInteractionClient.js.map +1 -1
- package/dist/interaction_client/HybridSpaAuthorizationCodeClient.d.ts +4 -4
- package/dist/interaction_client/HybridSpaAuthorizationCodeClient.js +10 -10
- package/dist/interaction_client/NativeInteractionClient.d.ts +148 -148
- package/dist/interaction_client/NativeInteractionClient.d.ts.map +1 -1
- package/dist/interaction_client/NativeInteractionClient.js +521 -517
- package/dist/interaction_client/NativeInteractionClient.js.map +1 -1
- package/dist/interaction_client/PopupClient.d.ts +111 -111
- package/dist/interaction_client/PopupClient.js +476 -476
- package/dist/interaction_client/RedirectClient.d.ts +48 -48
- package/dist/interaction_client/RedirectClient.d.ts.map +1 -1
- package/dist/interaction_client/RedirectClient.js +291 -290
- package/dist/interaction_client/RedirectClient.js.map +1 -1
- package/dist/interaction_client/SilentAuthCodeClient.d.ts +22 -22
- package/dist/interaction_client/SilentAuthCodeClient.js +62 -62
- package/dist/interaction_client/SilentCacheClient.d.ts +21 -21
- package/dist/interaction_client/SilentCacheClient.js +67 -67
- package/dist/interaction_client/SilentCacheClient.js.map +1 -1
- package/dist/interaction_client/SilentIframeClient.d.ts +31 -31
- package/dist/interaction_client/SilentIframeClient.js +127 -127
- package/dist/interaction_client/SilentRefreshClient.d.ts +19 -19
- package/dist/interaction_client/SilentRefreshClient.js +62 -62
- package/dist/interaction_client/SilentRefreshClient.js.map +1 -1
- package/dist/interaction_client/StandardInteractionClient.d.ts +59 -59
- package/dist/interaction_client/StandardInteractionClient.js +259 -259
- package/dist/interaction_handler/InteractionHandler.d.ts +39 -39
- package/dist/interaction_handler/InteractionHandler.js +127 -127
- package/dist/interaction_handler/RedirectHandler.d.ts +24 -24
- package/dist/interaction_handler/RedirectHandler.js +118 -118
- package/dist/interaction_handler/SilentHandler.d.ts +47 -47
- package/dist/interaction_handler/SilentHandler.js +162 -162
- package/dist/internals.d.ts +23 -23
- package/dist/internals.js +4 -4
- package/dist/navigation/INavigationClient.d.ts +16 -16
- package/dist/navigation/NavigationClient.d.ts +22 -22
- package/dist/navigation/NavigationClient.js +40 -40
- package/dist/navigation/NavigationOptions.d.ts +12 -12
- package/dist/network/FetchClient.d.ts +26 -26
- package/dist/network/FetchClient.js +99 -99
- package/dist/network/XhrClient.d.ts +40 -40
- package/dist/network/XhrClient.js +117 -117
- package/dist/operatingcontext/BaseOperatingContext.d.ts +40 -40
- package/dist/operatingcontext/BaseOperatingContext.js +44 -44
- package/dist/operatingcontext/StandardOperatingContext.d.ts +25 -25
- package/dist/operatingcontext/StandardOperatingContext.js +43 -43
- package/dist/operatingcontext/TeamsAppOperatingContext.d.ts +25 -25
- package/dist/operatingcontext/TeamsAppOperatingContext.js +42 -42
- package/dist/packageMetadata.d.ts +2 -2
- package/dist/packageMetadata.d.ts.map +1 -1
- package/dist/packageMetadata.js +4 -4
- package/dist/request/AuthorizationCodeRequest.d.ts +8 -8
- package/dist/request/AuthorizationUrlRequest.d.ts +8 -8
- package/dist/request/EndSessionPopupRequest.d.ts +18 -18
- package/dist/request/EndSessionRequest.d.ts +15 -15
- package/dist/request/PopupRequest.d.ts +32 -32
- package/dist/request/PopupWindowAttributes.d.ts +15 -15
- package/dist/request/RedirectRequest.d.ts +33 -33
- package/dist/request/SilentRequest.d.ts +30 -30
- package/dist/request/SsoSilentRequest.d.ts +26 -26
- package/dist/telemetry/BrowserPerformanceClient.d.ts +37 -38
- package/dist/telemetry/BrowserPerformanceClient.d.ts.map +1 -1
- package/dist/telemetry/BrowserPerformanceClient.js +124 -124
- package/dist/telemetry/BrowserPerformanceClient.js.map +1 -1
- package/dist/telemetry/BrowserPerformanceMeasurement.d.ts +21 -21
- package/dist/telemetry/BrowserPerformanceMeasurement.js +92 -92
- package/dist/utils/BrowserConstants.d.ts +176 -166
- package/dist/utils/BrowserConstants.d.ts.map +1 -1
- package/dist/utils/BrowserConstants.js +205 -215
- package/dist/utils/BrowserConstants.js.map +1 -1
- package/dist/utils/BrowserProtocolUtils.d.ts +18 -18
- package/dist/utils/BrowserProtocolUtils.js +34 -34
- package/dist/utils/BrowserStringUtils.d.ts +26 -26
- package/dist/utils/BrowserStringUtils.js +149 -149
- package/dist/utils/BrowserUtils.d.ts +65 -65
- package/dist/utils/BrowserUtils.js +138 -138
- package/dist/utils/MathUtils.d.ts +11 -11
- package/dist/utils/MathUtils.js +21 -21
- package/lib/msal-browser.cjs.js +18227 -0
- package/lib/msal-browser.cjs.js.map +1 -0
- package/lib/msal-browser.js +18233 -0
- package/lib/msal-browser.js.map +1 -0
- package/lib/msal-browser.min.js +63 -0
- package/package.json +101 -95
- package/dist/crypto/MsBrowserCrypto.d.ts +0 -10
- package/dist/crypto/MsBrowserCrypto.d.ts.map +0 -1
- package/dist/crypto/MsBrowserCrypto.js +0 -88
- package/dist/crypto/MsBrowserCrypto.js.map +0 -1
- package/dist/crypto/MsrBrowserCrypto.d.ts +0 -18
- package/dist/crypto/MsrBrowserCrypto.d.ts.map +0 -1
- package/dist/crypto/MsrBrowserCrypto.js +0 -35
- package/dist/crypto/MsrBrowserCrypto.js.map +0 -1
|
@@ -1,77 +1,77 @@
|
|
|
1
|
-
import { ICrypto, Logger, ExternalTokenResponse, AuthenticationResult } from "@azure/msal-common";
|
|
2
|
-
import { BrowserConfiguration } from "../config/Configuration";
|
|
3
|
-
import { SilentRequest } from "../request/SilentRequest";
|
|
4
|
-
import { BrowserCacheManager } from "./BrowserCacheManager";
|
|
5
|
-
import { ITokenCache } from "./ITokenCache";
|
|
6
|
-
export type LoadTokenOptions = {
|
|
7
|
-
clientInfo?: string;
|
|
8
|
-
expiresOn?: number;
|
|
9
|
-
extendedExpiresOn?: number;
|
|
10
|
-
};
|
|
11
|
-
/**
|
|
12
|
-
* Token cache manager
|
|
13
|
-
*/
|
|
14
|
-
export declare class TokenCache implements ITokenCache {
|
|
15
|
-
isBrowserEnvironment: boolean;
|
|
16
|
-
protected config: BrowserConfiguration;
|
|
17
|
-
private storage;
|
|
18
|
-
private logger;
|
|
19
|
-
private cryptoObj;
|
|
20
|
-
constructor(configuration: BrowserConfiguration, storage: BrowserCacheManager, logger: Logger, cryptoObj: ICrypto);
|
|
21
|
-
/**
|
|
22
|
-
* API to load tokens to msal-browser cache.
|
|
23
|
-
* @param request
|
|
24
|
-
* @param response
|
|
25
|
-
* @param options
|
|
26
|
-
* @returns `AuthenticationResult` for the response that was loaded.
|
|
27
|
-
*/
|
|
28
|
-
loadExternalTokens(request: SilentRequest, response: ExternalTokenResponse, options: LoadTokenOptions): AuthenticationResult;
|
|
29
|
-
/**
|
|
30
|
-
* Helper function to load account to msal-browser cache
|
|
31
|
-
* @param idToken
|
|
32
|
-
* @param environment
|
|
33
|
-
* @param clientInfo
|
|
34
|
-
* @param authorityType
|
|
35
|
-
* @param requestHomeAccountId
|
|
36
|
-
* @returns `AccountEntity`
|
|
37
|
-
*/
|
|
38
|
-
private loadAccount;
|
|
39
|
-
/**
|
|
40
|
-
* Helper function to load id tokens to msal-browser cache
|
|
41
|
-
* @param idToken
|
|
42
|
-
* @param homeAccountId
|
|
43
|
-
* @param environment
|
|
44
|
-
* @param tenantId
|
|
45
|
-
* @returns `IdTokenEntity`
|
|
46
|
-
*/
|
|
47
|
-
private loadIdToken;
|
|
48
|
-
/**
|
|
49
|
-
* Helper function to load access tokens to msal-browser cache
|
|
50
|
-
* @param request
|
|
51
|
-
* @param response
|
|
52
|
-
* @param homeAccountId
|
|
53
|
-
* @param environment
|
|
54
|
-
* @param tenantId
|
|
55
|
-
* @returns `AccessTokenEntity`
|
|
56
|
-
*/
|
|
57
|
-
private loadAccessToken;
|
|
58
|
-
/**
|
|
59
|
-
* Helper function to load refresh tokens to msal-browser cache
|
|
60
|
-
* @param request
|
|
61
|
-
* @param response
|
|
62
|
-
* @param homeAccountId
|
|
63
|
-
* @param environment
|
|
64
|
-
* @returns `RefreshTokenEntity`
|
|
65
|
-
*/
|
|
66
|
-
private loadRefreshToken;
|
|
67
|
-
/**
|
|
68
|
-
* Helper function to generate an `AuthenticationResult` for the result.
|
|
69
|
-
* @param request
|
|
70
|
-
* @param idTokenObj
|
|
71
|
-
* @param cacheRecord
|
|
72
|
-
* @param authority
|
|
73
|
-
* @returns `AuthenticationResult`
|
|
74
|
-
*/
|
|
75
|
-
private generateAuthenticationResult;
|
|
76
|
-
}
|
|
1
|
+
import { ICrypto, Logger, ExternalTokenResponse, AuthenticationResult } from "@azure/msal-common";
|
|
2
|
+
import { BrowserConfiguration } from "../config/Configuration";
|
|
3
|
+
import { SilentRequest } from "../request/SilentRequest";
|
|
4
|
+
import { BrowserCacheManager } from "./BrowserCacheManager";
|
|
5
|
+
import { ITokenCache } from "./ITokenCache";
|
|
6
|
+
export type LoadTokenOptions = {
|
|
7
|
+
clientInfo?: string;
|
|
8
|
+
expiresOn?: number;
|
|
9
|
+
extendedExpiresOn?: number;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Token cache manager
|
|
13
|
+
*/
|
|
14
|
+
export declare class TokenCache implements ITokenCache {
|
|
15
|
+
isBrowserEnvironment: boolean;
|
|
16
|
+
protected config: BrowserConfiguration;
|
|
17
|
+
private storage;
|
|
18
|
+
private logger;
|
|
19
|
+
private cryptoObj;
|
|
20
|
+
constructor(configuration: BrowserConfiguration, storage: BrowserCacheManager, logger: Logger, cryptoObj: ICrypto);
|
|
21
|
+
/**
|
|
22
|
+
* API to load tokens to msal-browser cache.
|
|
23
|
+
* @param request
|
|
24
|
+
* @param response
|
|
25
|
+
* @param options
|
|
26
|
+
* @returns `AuthenticationResult` for the response that was loaded.
|
|
27
|
+
*/
|
|
28
|
+
loadExternalTokens(request: SilentRequest, response: ExternalTokenResponse, options: LoadTokenOptions): AuthenticationResult;
|
|
29
|
+
/**
|
|
30
|
+
* Helper function to load account to msal-browser cache
|
|
31
|
+
* @param idToken
|
|
32
|
+
* @param environment
|
|
33
|
+
* @param clientInfo
|
|
34
|
+
* @param authorityType
|
|
35
|
+
* @param requestHomeAccountId
|
|
36
|
+
* @returns `AccountEntity`
|
|
37
|
+
*/
|
|
38
|
+
private loadAccount;
|
|
39
|
+
/**
|
|
40
|
+
* Helper function to load id tokens to msal-browser cache
|
|
41
|
+
* @param idToken
|
|
42
|
+
* @param homeAccountId
|
|
43
|
+
* @param environment
|
|
44
|
+
* @param tenantId
|
|
45
|
+
* @returns `IdTokenEntity`
|
|
46
|
+
*/
|
|
47
|
+
private loadIdToken;
|
|
48
|
+
/**
|
|
49
|
+
* Helper function to load access tokens to msal-browser cache
|
|
50
|
+
* @param request
|
|
51
|
+
* @param response
|
|
52
|
+
* @param homeAccountId
|
|
53
|
+
* @param environment
|
|
54
|
+
* @param tenantId
|
|
55
|
+
* @returns `AccessTokenEntity`
|
|
56
|
+
*/
|
|
57
|
+
private loadAccessToken;
|
|
58
|
+
/**
|
|
59
|
+
* Helper function to load refresh tokens to msal-browser cache
|
|
60
|
+
* @param request
|
|
61
|
+
* @param response
|
|
62
|
+
* @param homeAccountId
|
|
63
|
+
* @param environment
|
|
64
|
+
* @returns `RefreshTokenEntity`
|
|
65
|
+
*/
|
|
66
|
+
private loadRefreshToken;
|
|
67
|
+
/**
|
|
68
|
+
* Helper function to generate an `AuthenticationResult` for the result.
|
|
69
|
+
* @param request
|
|
70
|
+
* @param idTokenObj
|
|
71
|
+
* @param cacheRecord
|
|
72
|
+
* @param authority
|
|
73
|
+
* @returns `AuthenticationResult`
|
|
74
|
+
*/
|
|
75
|
+
private generateAuthenticationResult;
|
|
76
|
+
}
|
|
77
77
|
//# sourceMappingURL=TokenCache.d.ts.map
|
package/dist/cache/TokenCache.js
CHANGED
|
@@ -1,232 +1,232 @@
|
|
|
1
|
-
/*! @azure/msal-browser v3.0.0-
|
|
1
|
+
/*! @azure/msal-browser v3.0.0-beta.0 2023-06-19 */
|
|
2
2
|
'use strict';
|
|
3
3
|
import { AuthToken, CacheRecord, Authority, AccountEntity, IdTokenEntity, ScopeSet, AccessTokenEntity, RefreshTokenEntity, Constants } from '@azure/msal-common';
|
|
4
4
|
import { BrowserAuthError } from '../error/BrowserAuthError.js';
|
|
5
5
|
|
|
6
|
-
/*
|
|
7
|
-
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
8
|
-
* Licensed under the MIT License.
|
|
9
|
-
*/
|
|
10
|
-
/**
|
|
11
|
-
* Token cache manager
|
|
12
|
-
*/
|
|
13
|
-
class TokenCache {
|
|
14
|
-
constructor(configuration, storage, logger, cryptoObj) {
|
|
15
|
-
this.isBrowserEnvironment = typeof window !== "undefined";
|
|
16
|
-
this.config = configuration;
|
|
17
|
-
this.storage = storage;
|
|
18
|
-
this.logger = logger;
|
|
19
|
-
this.cryptoObj = cryptoObj;
|
|
20
|
-
}
|
|
21
|
-
// Move getAllAccounts here and cache utility APIs
|
|
22
|
-
/**
|
|
23
|
-
* API to load tokens to msal-browser cache.
|
|
24
|
-
* @param request
|
|
25
|
-
* @param response
|
|
26
|
-
* @param options
|
|
27
|
-
* @returns `AuthenticationResult` for the response that was loaded.
|
|
28
|
-
*/
|
|
29
|
-
loadExternalTokens(request, response, options) {
|
|
30
|
-
this.logger.info("TokenCache - loadExternalTokens called");
|
|
31
|
-
if (!response.id_token) {
|
|
32
|
-
throw BrowserAuthError.createUnableToLoadTokenError("Please ensure server response includes id token.");
|
|
33
|
-
}
|
|
34
|
-
const idToken = new AuthToken(response.id_token, this.cryptoObj);
|
|
35
|
-
let cacheRecord;
|
|
36
|
-
let authority;
|
|
37
|
-
if (request.account) {
|
|
38
|
-
const cacheRecordAccount = this.loadAccount(idToken, request.account.environment, undefined, undefined, request.account.homeAccountId);
|
|
39
|
-
cacheRecord = new CacheRecord(cacheRecordAccount, this.loadIdToken(idToken, cacheRecordAccount.homeAccountId, request.account.environment, request.account.tenantId), this.loadAccessToken(request, response, cacheRecordAccount.homeAccountId, request.account.environment, request.account.tenantId, options), this.loadRefreshToken(request, response, cacheRecordAccount.homeAccountId, request.account.environment));
|
|
40
|
-
}
|
|
41
|
-
else if (request.authority) {
|
|
42
|
-
const authorityUrl = Authority.generateAuthority(request.authority, request.azureCloudOptions);
|
|
43
|
-
const authorityOptions = {
|
|
44
|
-
protocolMode: this.config.auth.protocolMode,
|
|
45
|
-
knownAuthorities: this.config.auth.knownAuthorities,
|
|
46
|
-
cloudDiscoveryMetadata: this.config.auth.cloudDiscoveryMetadata,
|
|
47
|
-
authorityMetadata: this.config.auth.authorityMetadata,
|
|
48
|
-
skipAuthorityMetadataCache: this.config.auth.skipAuthorityMetadataCache,
|
|
49
|
-
};
|
|
50
|
-
authority = new Authority(authorityUrl, this.config.system.networkClient, this.storage, authorityOptions, this.logger);
|
|
51
|
-
// "clientInfo" from options takes precedence over "clientInfo" in response
|
|
52
|
-
if (options.clientInfo) {
|
|
53
|
-
this.logger.trace("TokenCache - homeAccountId from options");
|
|
54
|
-
const cacheRecordAccount = this.loadAccount(idToken, authority.hostnameAndPort, options.clientInfo, authority.authorityType);
|
|
55
|
-
cacheRecord = new CacheRecord(cacheRecordAccount, this.loadIdToken(idToken, cacheRecordAccount.homeAccountId, authority.hostnameAndPort, authority.tenant), this.loadAccessToken(request, response, cacheRecordAccount.homeAccountId, authority.hostnameAndPort, authority.tenant, options), this.loadRefreshToken(request, response, cacheRecordAccount.homeAccountId, authority.hostnameAndPort));
|
|
56
|
-
}
|
|
57
|
-
else if (response.client_info) {
|
|
58
|
-
this.logger.trace("TokenCache - homeAccountId from response");
|
|
59
|
-
const cacheRecordAccount = this.loadAccount(idToken, authority.hostnameAndPort, response.client_info, authority.authorityType);
|
|
60
|
-
cacheRecord = new CacheRecord(cacheRecordAccount, this.loadIdToken(idToken, cacheRecordAccount.homeAccountId, authority.hostnameAndPort, authority.tenant), this.loadAccessToken(request, response, cacheRecordAccount.homeAccountId, authority.hostnameAndPort, authority.tenant, options), this.loadRefreshToken(request, response, cacheRecordAccount.homeAccountId, authority.hostnameAndPort));
|
|
61
|
-
}
|
|
62
|
-
else {
|
|
63
|
-
throw BrowserAuthError.createUnableToLoadTokenError("Please provide clientInfo in the response or options.");
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
else {
|
|
67
|
-
throw BrowserAuthError.createUnableToLoadTokenError("Please provide a request with an account or a request with authority.");
|
|
68
|
-
}
|
|
69
|
-
return this.generateAuthenticationResult(request, idToken, cacheRecord, authority);
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* Helper function to load account to msal-browser cache
|
|
73
|
-
* @param idToken
|
|
74
|
-
* @param environment
|
|
75
|
-
* @param clientInfo
|
|
76
|
-
* @param authorityType
|
|
77
|
-
* @param requestHomeAccountId
|
|
78
|
-
* @returns `AccountEntity`
|
|
79
|
-
*/
|
|
80
|
-
loadAccount(idToken, environment, clientInfo, authorityType, requestHomeAccountId) {
|
|
81
|
-
let homeAccountId;
|
|
82
|
-
if (requestHomeAccountId) {
|
|
83
|
-
homeAccountId = requestHomeAccountId;
|
|
84
|
-
}
|
|
85
|
-
else if (authorityType !== undefined && clientInfo) {
|
|
86
|
-
homeAccountId = AccountEntity.generateHomeAccountId(clientInfo, authorityType, this.logger, this.cryptoObj, idToken);
|
|
87
|
-
}
|
|
88
|
-
if (!homeAccountId) {
|
|
89
|
-
throw BrowserAuthError.createUnableToLoadTokenError("Unexpected missing homeAccountId");
|
|
90
|
-
}
|
|
91
|
-
const accountEntity = clientInfo
|
|
92
|
-
? AccountEntity.createAccount(clientInfo, homeAccountId, idToken, undefined, undefined, undefined, environment)
|
|
93
|
-
: AccountEntity.createGenericAccount(homeAccountId, idToken, undefined, undefined, undefined, environment);
|
|
94
|
-
if (this.isBrowserEnvironment) {
|
|
95
|
-
this.logger.verbose("TokenCache - loading account");
|
|
96
|
-
this.storage.setAccount(accountEntity);
|
|
97
|
-
return accountEntity;
|
|
98
|
-
}
|
|
99
|
-
else {
|
|
100
|
-
throw BrowserAuthError.createUnableToLoadTokenError("loadExternalTokens is designed to work in browser environments only.");
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
/**
|
|
104
|
-
* Helper function to load id tokens to msal-browser cache
|
|
105
|
-
* @param idToken
|
|
106
|
-
* @param homeAccountId
|
|
107
|
-
* @param environment
|
|
108
|
-
* @param tenantId
|
|
109
|
-
* @returns `IdTokenEntity`
|
|
110
|
-
*/
|
|
111
|
-
loadIdToken(idToken, homeAccountId, environment, tenantId) {
|
|
112
|
-
const idTokenEntity = IdTokenEntity.createIdTokenEntity(homeAccountId, environment, idToken.rawToken, this.config.auth.clientId, tenantId);
|
|
113
|
-
if (this.isBrowserEnvironment) {
|
|
114
|
-
this.logger.verbose("TokenCache - loading id token");
|
|
115
|
-
this.storage.setIdTokenCredential(idTokenEntity);
|
|
116
|
-
return idTokenEntity;
|
|
117
|
-
}
|
|
118
|
-
else {
|
|
119
|
-
throw BrowserAuthError.createUnableToLoadTokenError("loadExternalTokens is designed to work in browser environments only.");
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
/**
|
|
123
|
-
* Helper function to load access tokens to msal-browser cache
|
|
124
|
-
* @param request
|
|
125
|
-
* @param response
|
|
126
|
-
* @param homeAccountId
|
|
127
|
-
* @param environment
|
|
128
|
-
* @param tenantId
|
|
129
|
-
* @returns `AccessTokenEntity`
|
|
130
|
-
*/
|
|
131
|
-
loadAccessToken(request, response, homeAccountId, environment, tenantId, options) {
|
|
132
|
-
if (!response.access_token) {
|
|
133
|
-
this.logger.verbose("TokenCache - No access token provided for caching");
|
|
134
|
-
return null;
|
|
135
|
-
}
|
|
136
|
-
if (!response.expires_in) {
|
|
137
|
-
throw BrowserAuthError.createUnableToLoadTokenError("Please ensure server response includes expires_in value.");
|
|
138
|
-
}
|
|
139
|
-
if (!options.extendedExpiresOn) {
|
|
140
|
-
throw BrowserAuthError.createUnableToLoadTokenError("Please provide an extendedExpiresOn value in the options.");
|
|
141
|
-
}
|
|
142
|
-
const scopes = new ScopeSet(request.scopes).printScopes();
|
|
143
|
-
const expiresOn = options.expiresOn ||
|
|
144
|
-
response.expires_in + new Date().getTime() / 1000;
|
|
145
|
-
const extendedExpiresOn = options.extendedExpiresOn;
|
|
146
|
-
const accessTokenEntity = AccessTokenEntity.createAccessTokenEntity(homeAccountId, environment, response.access_token, this.config.auth.clientId, tenantId, scopes, expiresOn, extendedExpiresOn, this.cryptoObj);
|
|
147
|
-
if (this.isBrowserEnvironment) {
|
|
148
|
-
this.logger.verbose("TokenCache - loading access token");
|
|
149
|
-
this.storage.setAccessTokenCredential(accessTokenEntity);
|
|
150
|
-
return accessTokenEntity;
|
|
151
|
-
}
|
|
152
|
-
else {
|
|
153
|
-
throw BrowserAuthError.createUnableToLoadTokenError("loadExternalTokens is designed to work in browser environments only.");
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
/**
|
|
157
|
-
* Helper function to load refresh tokens to msal-browser cache
|
|
158
|
-
* @param request
|
|
159
|
-
* @param response
|
|
160
|
-
* @param homeAccountId
|
|
161
|
-
* @param environment
|
|
162
|
-
* @returns `RefreshTokenEntity`
|
|
163
|
-
*/
|
|
164
|
-
loadRefreshToken(request, response, homeAccountId, environment) {
|
|
165
|
-
if (!response.refresh_token) {
|
|
166
|
-
this.logger.verbose("TokenCache - No refresh token provided for caching");
|
|
167
|
-
return null;
|
|
168
|
-
}
|
|
169
|
-
const refreshTokenEntity = RefreshTokenEntity.createRefreshTokenEntity(homeAccountId, environment, response.refresh_token, this.config.auth.clientId);
|
|
170
|
-
if (this.isBrowserEnvironment) {
|
|
171
|
-
this.logger.verbose("TokenCache - loading refresh token");
|
|
172
|
-
this.storage.setRefreshTokenCredential(refreshTokenEntity);
|
|
173
|
-
return refreshTokenEntity;
|
|
174
|
-
}
|
|
175
|
-
else {
|
|
176
|
-
throw BrowserAuthError.createUnableToLoadTokenError("loadExternalTokens is designed to work in browser environments only.");
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
/**
|
|
180
|
-
* Helper function to generate an `AuthenticationResult` for the result.
|
|
181
|
-
* @param request
|
|
182
|
-
* @param idTokenObj
|
|
183
|
-
* @param cacheRecord
|
|
184
|
-
* @param authority
|
|
185
|
-
* @returns `AuthenticationResult`
|
|
186
|
-
*/
|
|
187
|
-
generateAuthenticationResult(request, idTokenObj, cacheRecord, authority) {
|
|
188
|
-
let accessToken = Constants.EMPTY_STRING;
|
|
189
|
-
let responseScopes = [];
|
|
190
|
-
let expiresOn = null;
|
|
191
|
-
let extExpiresOn;
|
|
192
|
-
if (cacheRecord?.accessToken) {
|
|
193
|
-
accessToken = cacheRecord.accessToken.secret;
|
|
194
|
-
responseScopes = ScopeSet.fromString(cacheRecord.accessToken.target).asArray();
|
|
195
|
-
expiresOn = new Date(Number(cacheRecord.accessToken.expiresOn) * 1000);
|
|
196
|
-
extExpiresOn = new Date(Number(cacheRecord.accessToken.extendedExpiresOn) * 1000);
|
|
197
|
-
}
|
|
198
|
-
const uid = idTokenObj?.claims.oid ||
|
|
199
|
-
idTokenObj?.claims.sub ||
|
|
200
|
-
Constants.EMPTY_STRING;
|
|
201
|
-
const tid = idTokenObj?.claims.tid || Constants.EMPTY_STRING;
|
|
202
|
-
return {
|
|
203
|
-
authority: authority
|
|
204
|
-
? authority.canonicalAuthority
|
|
205
|
-
: Constants.EMPTY_STRING,
|
|
206
|
-
uniqueId: uid,
|
|
207
|
-
tenantId: tid,
|
|
208
|
-
scopes: responseScopes,
|
|
209
|
-
account: cacheRecord?.account
|
|
210
|
-
? cacheRecord.account.getAccountInfo()
|
|
211
|
-
: null,
|
|
212
|
-
idToken: idTokenObj ? idTokenObj.rawToken : Constants.EMPTY_STRING,
|
|
213
|
-
idTokenClaims: idTokenObj ? idTokenObj.claims : {},
|
|
214
|
-
accessToken: accessToken,
|
|
215
|
-
fromCache: true,
|
|
216
|
-
expiresOn: expiresOn,
|
|
217
|
-
correlationId: request.correlationId || Constants.EMPTY_STRING,
|
|
218
|
-
requestId: Constants.EMPTY_STRING,
|
|
219
|
-
extExpiresOn: extExpiresOn,
|
|
220
|
-
familyId: Constants.EMPTY_STRING,
|
|
221
|
-
tokenType: cacheRecord?.accessToken?.tokenType || Constants.EMPTY_STRING,
|
|
222
|
-
state: Constants.EMPTY_STRING,
|
|
223
|
-
cloudGraphHostName: cacheRecord?.account?.cloudGraphHostName ||
|
|
224
|
-
Constants.EMPTY_STRING,
|
|
225
|
-
msGraphHost: cacheRecord?.account?.msGraphHost || Constants.EMPTY_STRING,
|
|
226
|
-
code: undefined,
|
|
227
|
-
fromNativeBroker: false,
|
|
228
|
-
};
|
|
229
|
-
}
|
|
6
|
+
/*
|
|
7
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
8
|
+
* Licensed under the MIT License.
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Token cache manager
|
|
12
|
+
*/
|
|
13
|
+
class TokenCache {
|
|
14
|
+
constructor(configuration, storage, logger, cryptoObj) {
|
|
15
|
+
this.isBrowserEnvironment = typeof window !== "undefined";
|
|
16
|
+
this.config = configuration;
|
|
17
|
+
this.storage = storage;
|
|
18
|
+
this.logger = logger;
|
|
19
|
+
this.cryptoObj = cryptoObj;
|
|
20
|
+
}
|
|
21
|
+
// Move getAllAccounts here and cache utility APIs
|
|
22
|
+
/**
|
|
23
|
+
* API to load tokens to msal-browser cache.
|
|
24
|
+
* @param request
|
|
25
|
+
* @param response
|
|
26
|
+
* @param options
|
|
27
|
+
* @returns `AuthenticationResult` for the response that was loaded.
|
|
28
|
+
*/
|
|
29
|
+
loadExternalTokens(request, response, options) {
|
|
30
|
+
this.logger.info("TokenCache - loadExternalTokens called");
|
|
31
|
+
if (!response.id_token) {
|
|
32
|
+
throw BrowserAuthError.createUnableToLoadTokenError("Please ensure server response includes id token.");
|
|
33
|
+
}
|
|
34
|
+
const idToken = new AuthToken(response.id_token, this.cryptoObj);
|
|
35
|
+
let cacheRecord;
|
|
36
|
+
let authority;
|
|
37
|
+
if (request.account) {
|
|
38
|
+
const cacheRecordAccount = this.loadAccount(idToken, request.account.environment, undefined, undefined, request.account.homeAccountId);
|
|
39
|
+
cacheRecord = new CacheRecord(cacheRecordAccount, this.loadIdToken(idToken, cacheRecordAccount.homeAccountId, request.account.environment, request.account.tenantId), this.loadAccessToken(request, response, cacheRecordAccount.homeAccountId, request.account.environment, request.account.tenantId, options), this.loadRefreshToken(request, response, cacheRecordAccount.homeAccountId, request.account.environment));
|
|
40
|
+
}
|
|
41
|
+
else if (request.authority) {
|
|
42
|
+
const authorityUrl = Authority.generateAuthority(request.authority, request.azureCloudOptions);
|
|
43
|
+
const authorityOptions = {
|
|
44
|
+
protocolMode: this.config.auth.protocolMode,
|
|
45
|
+
knownAuthorities: this.config.auth.knownAuthorities,
|
|
46
|
+
cloudDiscoveryMetadata: this.config.auth.cloudDiscoveryMetadata,
|
|
47
|
+
authorityMetadata: this.config.auth.authorityMetadata,
|
|
48
|
+
skipAuthorityMetadataCache: this.config.auth.skipAuthorityMetadataCache,
|
|
49
|
+
};
|
|
50
|
+
authority = new Authority(authorityUrl, this.config.system.networkClient, this.storage, authorityOptions, this.logger);
|
|
51
|
+
// "clientInfo" from options takes precedence over "clientInfo" in response
|
|
52
|
+
if (options.clientInfo) {
|
|
53
|
+
this.logger.trace("TokenCache - homeAccountId from options");
|
|
54
|
+
const cacheRecordAccount = this.loadAccount(idToken, authority.hostnameAndPort, options.clientInfo, authority.authorityType);
|
|
55
|
+
cacheRecord = new CacheRecord(cacheRecordAccount, this.loadIdToken(idToken, cacheRecordAccount.homeAccountId, authority.hostnameAndPort, authority.tenant), this.loadAccessToken(request, response, cacheRecordAccount.homeAccountId, authority.hostnameAndPort, authority.tenant, options), this.loadRefreshToken(request, response, cacheRecordAccount.homeAccountId, authority.hostnameAndPort));
|
|
56
|
+
}
|
|
57
|
+
else if (response.client_info) {
|
|
58
|
+
this.logger.trace("TokenCache - homeAccountId from response");
|
|
59
|
+
const cacheRecordAccount = this.loadAccount(idToken, authority.hostnameAndPort, response.client_info, authority.authorityType);
|
|
60
|
+
cacheRecord = new CacheRecord(cacheRecordAccount, this.loadIdToken(idToken, cacheRecordAccount.homeAccountId, authority.hostnameAndPort, authority.tenant), this.loadAccessToken(request, response, cacheRecordAccount.homeAccountId, authority.hostnameAndPort, authority.tenant, options), this.loadRefreshToken(request, response, cacheRecordAccount.homeAccountId, authority.hostnameAndPort));
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
throw BrowserAuthError.createUnableToLoadTokenError("Please provide clientInfo in the response or options.");
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
throw BrowserAuthError.createUnableToLoadTokenError("Please provide a request with an account or a request with authority.");
|
|
68
|
+
}
|
|
69
|
+
return this.generateAuthenticationResult(request, idToken, cacheRecord, authority);
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Helper function to load account to msal-browser cache
|
|
73
|
+
* @param idToken
|
|
74
|
+
* @param environment
|
|
75
|
+
* @param clientInfo
|
|
76
|
+
* @param authorityType
|
|
77
|
+
* @param requestHomeAccountId
|
|
78
|
+
* @returns `AccountEntity`
|
|
79
|
+
*/
|
|
80
|
+
loadAccount(idToken, environment, clientInfo, authorityType, requestHomeAccountId) {
|
|
81
|
+
let homeAccountId;
|
|
82
|
+
if (requestHomeAccountId) {
|
|
83
|
+
homeAccountId = requestHomeAccountId;
|
|
84
|
+
}
|
|
85
|
+
else if (authorityType !== undefined && clientInfo) {
|
|
86
|
+
homeAccountId = AccountEntity.generateHomeAccountId(clientInfo, authorityType, this.logger, this.cryptoObj, idToken);
|
|
87
|
+
}
|
|
88
|
+
if (!homeAccountId) {
|
|
89
|
+
throw BrowserAuthError.createUnableToLoadTokenError("Unexpected missing homeAccountId");
|
|
90
|
+
}
|
|
91
|
+
const accountEntity = clientInfo
|
|
92
|
+
? AccountEntity.createAccount(clientInfo, homeAccountId, idToken, undefined, undefined, undefined, environment)
|
|
93
|
+
: AccountEntity.createGenericAccount(homeAccountId, idToken, undefined, undefined, undefined, environment);
|
|
94
|
+
if (this.isBrowserEnvironment) {
|
|
95
|
+
this.logger.verbose("TokenCache - loading account");
|
|
96
|
+
this.storage.setAccount(accountEntity);
|
|
97
|
+
return accountEntity;
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
throw BrowserAuthError.createUnableToLoadTokenError("loadExternalTokens is designed to work in browser environments only.");
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Helper function to load id tokens to msal-browser cache
|
|
105
|
+
* @param idToken
|
|
106
|
+
* @param homeAccountId
|
|
107
|
+
* @param environment
|
|
108
|
+
* @param tenantId
|
|
109
|
+
* @returns `IdTokenEntity`
|
|
110
|
+
*/
|
|
111
|
+
loadIdToken(idToken, homeAccountId, environment, tenantId) {
|
|
112
|
+
const idTokenEntity = IdTokenEntity.createIdTokenEntity(homeAccountId, environment, idToken.rawToken, this.config.auth.clientId, tenantId);
|
|
113
|
+
if (this.isBrowserEnvironment) {
|
|
114
|
+
this.logger.verbose("TokenCache - loading id token");
|
|
115
|
+
this.storage.setIdTokenCredential(idTokenEntity);
|
|
116
|
+
return idTokenEntity;
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
throw BrowserAuthError.createUnableToLoadTokenError("loadExternalTokens is designed to work in browser environments only.");
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Helper function to load access tokens to msal-browser cache
|
|
124
|
+
* @param request
|
|
125
|
+
* @param response
|
|
126
|
+
* @param homeAccountId
|
|
127
|
+
* @param environment
|
|
128
|
+
* @param tenantId
|
|
129
|
+
* @returns `AccessTokenEntity`
|
|
130
|
+
*/
|
|
131
|
+
loadAccessToken(request, response, homeAccountId, environment, tenantId, options) {
|
|
132
|
+
if (!response.access_token) {
|
|
133
|
+
this.logger.verbose("TokenCache - No access token provided for caching");
|
|
134
|
+
return null;
|
|
135
|
+
}
|
|
136
|
+
if (!response.expires_in) {
|
|
137
|
+
throw BrowserAuthError.createUnableToLoadTokenError("Please ensure server response includes expires_in value.");
|
|
138
|
+
}
|
|
139
|
+
if (!options.extendedExpiresOn) {
|
|
140
|
+
throw BrowserAuthError.createUnableToLoadTokenError("Please provide an extendedExpiresOn value in the options.");
|
|
141
|
+
}
|
|
142
|
+
const scopes = new ScopeSet(request.scopes).printScopes();
|
|
143
|
+
const expiresOn = options.expiresOn ||
|
|
144
|
+
response.expires_in + new Date().getTime() / 1000;
|
|
145
|
+
const extendedExpiresOn = options.extendedExpiresOn;
|
|
146
|
+
const accessTokenEntity = AccessTokenEntity.createAccessTokenEntity(homeAccountId, environment, response.access_token, this.config.auth.clientId, tenantId, scopes, expiresOn, extendedExpiresOn, this.cryptoObj);
|
|
147
|
+
if (this.isBrowserEnvironment) {
|
|
148
|
+
this.logger.verbose("TokenCache - loading access token");
|
|
149
|
+
this.storage.setAccessTokenCredential(accessTokenEntity);
|
|
150
|
+
return accessTokenEntity;
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
throw BrowserAuthError.createUnableToLoadTokenError("loadExternalTokens is designed to work in browser environments only.");
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Helper function to load refresh tokens to msal-browser cache
|
|
158
|
+
* @param request
|
|
159
|
+
* @param response
|
|
160
|
+
* @param homeAccountId
|
|
161
|
+
* @param environment
|
|
162
|
+
* @returns `RefreshTokenEntity`
|
|
163
|
+
*/
|
|
164
|
+
loadRefreshToken(request, response, homeAccountId, environment) {
|
|
165
|
+
if (!response.refresh_token) {
|
|
166
|
+
this.logger.verbose("TokenCache - No refresh token provided for caching");
|
|
167
|
+
return null;
|
|
168
|
+
}
|
|
169
|
+
const refreshTokenEntity = RefreshTokenEntity.createRefreshTokenEntity(homeAccountId, environment, response.refresh_token, this.config.auth.clientId);
|
|
170
|
+
if (this.isBrowserEnvironment) {
|
|
171
|
+
this.logger.verbose("TokenCache - loading refresh token");
|
|
172
|
+
this.storage.setRefreshTokenCredential(refreshTokenEntity);
|
|
173
|
+
return refreshTokenEntity;
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
throw BrowserAuthError.createUnableToLoadTokenError("loadExternalTokens is designed to work in browser environments only.");
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Helper function to generate an `AuthenticationResult` for the result.
|
|
181
|
+
* @param request
|
|
182
|
+
* @param idTokenObj
|
|
183
|
+
* @param cacheRecord
|
|
184
|
+
* @param authority
|
|
185
|
+
* @returns `AuthenticationResult`
|
|
186
|
+
*/
|
|
187
|
+
generateAuthenticationResult(request, idTokenObj, cacheRecord, authority) {
|
|
188
|
+
let accessToken = Constants.EMPTY_STRING;
|
|
189
|
+
let responseScopes = [];
|
|
190
|
+
let expiresOn = null;
|
|
191
|
+
let extExpiresOn;
|
|
192
|
+
if (cacheRecord?.accessToken) {
|
|
193
|
+
accessToken = cacheRecord.accessToken.secret;
|
|
194
|
+
responseScopes = ScopeSet.fromString(cacheRecord.accessToken.target).asArray();
|
|
195
|
+
expiresOn = new Date(Number(cacheRecord.accessToken.expiresOn) * 1000);
|
|
196
|
+
extExpiresOn = new Date(Number(cacheRecord.accessToken.extendedExpiresOn) * 1000);
|
|
197
|
+
}
|
|
198
|
+
const uid = idTokenObj?.claims.oid ||
|
|
199
|
+
idTokenObj?.claims.sub ||
|
|
200
|
+
Constants.EMPTY_STRING;
|
|
201
|
+
const tid = idTokenObj?.claims.tid || Constants.EMPTY_STRING;
|
|
202
|
+
return {
|
|
203
|
+
authority: authority
|
|
204
|
+
? authority.canonicalAuthority
|
|
205
|
+
: Constants.EMPTY_STRING,
|
|
206
|
+
uniqueId: uid,
|
|
207
|
+
tenantId: tid,
|
|
208
|
+
scopes: responseScopes,
|
|
209
|
+
account: cacheRecord?.account
|
|
210
|
+
? cacheRecord.account.getAccountInfo()
|
|
211
|
+
: null,
|
|
212
|
+
idToken: idTokenObj ? idTokenObj.rawToken : Constants.EMPTY_STRING,
|
|
213
|
+
idTokenClaims: idTokenObj ? idTokenObj.claims : {},
|
|
214
|
+
accessToken: accessToken,
|
|
215
|
+
fromCache: true,
|
|
216
|
+
expiresOn: expiresOn,
|
|
217
|
+
correlationId: request.correlationId || Constants.EMPTY_STRING,
|
|
218
|
+
requestId: Constants.EMPTY_STRING,
|
|
219
|
+
extExpiresOn: extExpiresOn,
|
|
220
|
+
familyId: Constants.EMPTY_STRING,
|
|
221
|
+
tokenType: cacheRecord?.accessToken?.tokenType || Constants.EMPTY_STRING,
|
|
222
|
+
state: Constants.EMPTY_STRING,
|
|
223
|
+
cloudGraphHostName: cacheRecord?.account?.cloudGraphHostName ||
|
|
224
|
+
Constants.EMPTY_STRING,
|
|
225
|
+
msGraphHost: cacheRecord?.account?.msGraphHost || Constants.EMPTY_STRING,
|
|
226
|
+
code: undefined,
|
|
227
|
+
fromNativeBroker: false,
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
230
|
}
|
|
231
231
|
|
|
232
232
|
export { TokenCache };
|