UNPKG

@azure/msal-browser

Version:
179 lines (176 loc) 9.64 kB
/*! @azure/msal-browser v2.28.1 2022-08-01 */ 'use strict'; import { __awaiter, __generator, __spread, __assign } from '../_virtual/_tslib.js'; import { AccountEntity, AuthenticationScheme, ClientConfigurationError, StringUtils, UrlString, ServerTelemetryManager, AuthorityFactory } from '@azure/msal-common'; import { version } from '../packageMetadata.js'; import { BrowserConstants } from '../utils/BrowserConstants.js'; import { BrowserUtils } from '../utils/BrowserUtils.js'; /* * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. */ var BaseInteractionClient = /** @class */ (function () { function BaseInteractionClient(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, performanceClient, nativeMessageHandler, correlationId) { this.config = config; this.browserStorage = storageImpl; this.browserCrypto = browserCrypto; this.networkClient = this.config.system.networkClient; this.eventHandler = eventHandler; this.navigationClient = navigationClient; this.nativeMessageHandler = nativeMessageHandler; this.correlationId = correlationId || this.browserCrypto.createNewGuid(); this.logger = logger.clone(BrowserConstants.MSAL_SKU, version, this.correlationId); this.performanceClient = performanceClient; } BaseInteractionClient.prototype.clearCacheOnLogout = function (account) { return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) { switch (_a.label) { case 0: if (!account) return [3 /*break*/, 5]; if (AccountEntity.accountInfoIsEqual(account, this.browserStorage.getActiveAccount(), false)) { this.logger.verbose("Setting active account to null"); this.browserStorage.setActiveAccount(null); } _a.label = 1; case 1: _a.trys.push([1, 3, , 4]); return [4 /*yield*/, this.browserStorage.removeAccount(AccountEntity.generateAccountCacheKey(account))]; case 2: _a.sent(); this.logger.verbose("Cleared cache items belonging to the account provided in the logout request."); return [3 /*break*/, 4]; case 3: _a.sent(); this.logger.error("Account provided in logout request was not found. Local cache unchanged."); return [3 /*break*/, 4]; case 4: return [3 /*break*/, 9]; case 5: _a.trys.push([5, 8, , 9]); this.logger.verbose("No account provided in logout request, clearing all cache items.", this.correlationId); // Clear all accounts and tokens return [4 /*yield*/, this.browserStorage.clear()]; case 6: // Clear all accounts and tokens _a.sent(); // Clear any stray keys from IndexedDB return [4 /*yield*/, this.browserCrypto.clearKeystore()]; case 7: // Clear any stray keys from IndexedDB _a.sent(); return [3 /*break*/, 9]; case 8: _a.sent(); this.logger.error("Attempted to clear all MSAL cache items and failed. Local cache unchanged."); return [3 /*break*/, 9]; case 9: return [2 /*return*/]; } }); }); }; /** * Initializer function for all request APIs * @param request */ BaseInteractionClient.prototype.initializeBaseRequest = function (request) { return __awaiter(this, void 0, void 0, function () { var authority, scopes, validatedRequest, _a; return __generator(this, function (_b) { switch (_b.label) { case 0: this.logger.verbose("Initializing BaseAuthRequest"); authority = request.authority || this.config.auth.authority; scopes = __spread(((request && request.scopes) || [])); validatedRequest = __assign(__assign({}, request), { correlationId: this.correlationId, authority: authority, scopes: scopes }); // Set authenticationScheme to BEARER if not explicitly set in the request if (!validatedRequest.authenticationScheme) { validatedRequest.authenticationScheme = AuthenticationScheme.BEARER; this.logger.verbose("Authentication Scheme wasn't explicitly set in request, defaulting to \"Bearer\" request"); } else { if (validatedRequest.authenticationScheme === AuthenticationScheme.SSH) { if (!request.sshJwk) { throw ClientConfigurationError.createMissingSshJwkError(); } if (!request.sshKid) { throw ClientConfigurationError.createMissingSshKidError(); } } this.logger.verbose("Authentication Scheme set to \"" + validatedRequest.authenticationScheme + "\" as configured in Auth request"); } if (!(request.claims && !StringUtils.isEmpty(request.claims))) return [3 /*break*/, 2]; _a = validatedRequest; return [4 /*yield*/, this.browserCrypto.hashString(request.claims)]; case 1: _a.requestedClaimsHash = _b.sent(); _b.label = 2; case 2: return [2 /*return*/, validatedRequest]; } }); }); }; /** * * Use to get the redirect uri configured in MSAL or null. * @param requestRedirectUri * @returns Redirect URL * */ BaseInteractionClient.prototype.getRedirectUri = function (requestRedirectUri) { this.logger.verbose("getRedirectUri called"); var redirectUri = requestRedirectUri || this.config.auth.redirectUri || BrowserUtils.getCurrentUri(); return UrlString.getAbsoluteUrl(redirectUri, BrowserUtils.getCurrentUri()); }; /** * * @param apiId * @param correlationId * @param forceRefresh */ BaseInteractionClient.prototype.initializeServerTelemetryManager = function (apiId, forceRefresh) { this.logger.verbose("initializeServerTelemetryManager called"); var telemetryPayload = { clientId: this.config.auth.clientId, correlationId: this.correlationId, apiId: apiId, forceRefresh: forceRefresh || false, wrapperSKU: this.browserStorage.getWrapperMetadata()[0], wrapperVer: this.browserStorage.getWrapperMetadata()[1] }; return new ServerTelemetryManager(telemetryPayload, this.browserStorage); }; /** * Used to get a discovered version of the default authority. * @param requestAuthority * @param requestCorrelationId */ BaseInteractionClient.prototype.getDiscoveredAuthority = function (requestAuthority) { return __awaiter(this, void 0, void 0, function () { var authorityOptions; return __generator(this, function (_a) { switch (_a.label) { case 0: this.logger.verbose("getDiscoveredAuthority called"); authorityOptions = { protocolMode: this.config.auth.protocolMode, knownAuthorities: this.config.auth.knownAuthorities, cloudDiscoveryMetadata: this.config.auth.cloudDiscoveryMetadata, authorityMetadata: this.config.auth.authorityMetadata }; if (!requestAuthority) return [3 /*break*/, 2]; this.logger.verbose("Creating discovered authority with request authority"); return [4 /*yield*/, AuthorityFactory.createDiscoveredInstance(requestAuthority, this.config.system.networkClient, this.browserStorage, authorityOptions)]; case 1: return [2 /*return*/, _a.sent()]; case 2: this.logger.verbose("Creating discovered authority with configured authority"); return [4 /*yield*/, AuthorityFactory.createDiscoveredInstance(this.config.auth.authority, this.config.system.networkClient, this.browserStorage, authorityOptions)]; case 3: return [2 /*return*/, _a.sent()]; } }); }); }; return BaseInteractionClient; }()); export { BaseInteractionClient }; //# sourceMappingURL=BaseInteractionClient.js.map