UNPKG

@azure/msal-browser

Version:
84 lines (81 loc) 4.78 kB
/*! @azure/msal-browser v5.6.3 2026-04-01 */ 'use strict'; import { invokeAsync, PerformanceEvents, AuthError } from '@azure/msal-common/browser'; import { StandardInteractionClient, initializeAuthorizationRequest } from './StandardInteractionClient.mjs'; import { StandardInteractionClientInitializeAuthorizationRequest, StandardInteractionClientGetClientConfiguration } from '../telemetry/BrowserPerformanceEvents.mjs'; import { createBrowserAuthError } from '../error/BrowserAuthError.mjs'; import { InteractionType } from '../utils/BrowserConstants.mjs'; import { HybridSpaAuthorizationCodeClient } from './HybridSpaAuthorizationCodeClient.mjs'; import { InteractionHandler } from '../interaction_handler/InteractionHandler.mjs'; import { initializeServerTelemetryManager } from './BaseInteractionClient.mjs'; import { authCodeRequired, silentLogoutUnsupported } from '../error/BrowserAuthErrorCodes.mjs'; /* * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. */ class SilentAuthCodeClient extends StandardInteractionClient { constructor(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, apiId, performanceClient, correlationId, platformAuthProvider) { super(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, performanceClient, correlationId, platformAuthProvider); this.apiId = apiId; } /** * Acquires a token silently by redeeming an authorization code against the /token endpoint * @param request */ async acquireToken(request) { // Auth code payload is required if (!request.code) { throw createBrowserAuthError(authCodeRequired); } // Create silent request const silentRequest = await invokeAsync(initializeAuthorizationRequest, StandardInteractionClientInitializeAuthorizationRequest, this.logger, this.performanceClient, this.correlationId)(request, InteractionType.Silent, this.config, this.browserCrypto, this.browserStorage, this.logger, this.performanceClient, /* * correlationId is optional in request payload, while this.correlationId is always instantiated as request.correlationId || createGuid(). * Each auth request creates a new instance of *Client so we can safely use this.correlationId. */ this.correlationId); const serverTelemetryManager = initializeServerTelemetryManager(this.apiId, this.config.auth.clientId, this.correlationId, this.browserStorage, this.logger); try { // Create auth code request (PKCE not needed) const authCodeRequest = { ...silentRequest, code: request.code, }; // Initialize the client const clientConfig = await invokeAsync(this.getClientConfiguration.bind(this), StandardInteractionClientGetClientConfiguration, this.logger, this.performanceClient, this.correlationId)({ serverTelemetryManager, requestAuthority: silentRequest.authority, requestAzureCloudOptions: silentRequest.azureCloudOptions, requestExtraQueryParameters: silentRequest.extraQueryParameters, account: silentRequest.account, }); const authClient = new HybridSpaAuthorizationCodeClient(clientConfig, this.performanceClient); this.logger.verbose("1uic5e", this.correlationId); // Create silent handler const interactionHandler = new InteractionHandler(authClient, this.browserStorage, authCodeRequest, this.logger, this.performanceClient); // Handle auth code parameters from request return await invokeAsync(interactionHandler.handleCodeResponseFromServer.bind(interactionHandler), PerformanceEvents.HandleCodeResponseFromServer, this.logger, this.performanceClient, this.correlationId)({ code: request.code, msgraph_host: request.msGraphHost, cloud_graph_host_name: request.cloudGraphHostName, cloud_instance_host_name: request.cloudInstanceHostName, }, silentRequest, this.apiId, false); } catch (e) { if (e instanceof AuthError) { e.setCorrelationId(this.correlationId); serverTelemetryManager.cacheFailedRequest(e); } throw e; } } /** * Currently Unsupported */ logout() { // Synchronous so we must reject return Promise.reject(createBrowserAuthError(silentLogoutUnsupported)); } } export { SilentAuthCodeClient }; //# sourceMappingURL=SilentAuthCodeClient.mjs.map