UNPKG

@azure/msal-browser

Version:
97 lines (94 loc) 4.37 kB
/*! @azure/msal-browser v5.11.0 2026-05-19 */ 'use strict'; import { Logger, StubPerformanceClient, createClientConfigurationError, ClientConfigurationErrorCodes, Constants } from '@azure/msal-common/browser'; import { name, version } from '../../packageMetadata.mjs'; import { DEFAULT_NATIVE_BROKER_HANDSHAKE_TIMEOUT_MS } from '../../config/Configuration.mjs'; import { PlatformAuthExtensionHandler } from './PlatformAuthExtensionHandler.mjs'; import { PlatformAuthDOMHandler } from './PlatformAuthDOMHandler.mjs'; import { createNewGuid } from '../../crypto/BrowserCrypto.mjs'; /* * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. */ /** * Checks if the platform broker is available in the current environment. * @param domConfig - Whether to enable platform broker DOM API support (required) * @param loggerOptions - Optional logger options * @param perfClient - Optional performance client * @param correlationId - Optional correlation ID * @returns Promise<boolean> indicating if platform broker is available */ async function isPlatformBrokerAvailable(domConfig, loggerOptions, perfClient, correlationId) { const logger = new Logger(loggerOptions || {}, name, version); const performanceClient = perfClient || new StubPerformanceClient(); if (typeof window === "undefined") { logger.trace("082ed3", correlationId || createNewGuid()); return false; } return !!(await getPlatformAuthProvider(logger, performanceClient, correlationId || createNewGuid(), undefined, domConfig)); } async function getPlatformAuthProvider(logger, performanceClient, correlationId, nativeBrokerHandshakeTimeout, enablePlatformBrokerDOMSupport) { logger.trace("134j0v", correlationId); logger.trace("04c81g", correlationId); let platformAuthProvider; try { if (enablePlatformBrokerDOMSupport) { // Check if DOM platform API is supported first platformAuthProvider = await PlatformAuthDOMHandler.createProvider(logger, performanceClient, correlationId); } if (!platformAuthProvider) { logger.trace("0l3na8", correlationId); /* * If DOM APIs are not available, check if browser extension is available. * Platform authentication via DOM APIs is preferred over extension APIs. */ platformAuthProvider = await PlatformAuthExtensionHandler.createProvider(logger, nativeBrokerHandshakeTimeout || DEFAULT_NATIVE_BROKER_HANDSHAKE_TIMEOUT_MS, performanceClient, correlationId); } } catch (e) { logger.trace("0icbd7", e); } return platformAuthProvider; } /** * Returns boolean indicating whether or not the request should attempt to use platform broker * @param logger * @param config * @param correlationId * @param platformAuthProvider * @param authenticationScheme */ function isPlatformAuthAllowed(config, logger, correlationId, platformAuthProvider, authenticationScheme) { logger.trace("0uko3r", correlationId); // throw an error if allowPlatformBroker is not enabled and allowPlatformBrokerWithDOM is enabled if (!config.system.allowPlatformBroker && config.experimental.allowPlatformBrokerWithDOM) { throw createClientConfigurationError(ClientConfigurationErrorCodes.invalidPlatformBrokerConfiguration); } if (!config.system.allowPlatformBroker) { logger.trace("04hozs", correlationId); // Developer disabled WAM return false; } if (!platformAuthProvider) { logger.trace("0kvv1r", correlationId); // Platform broker auth providers are not available return false; } if (authenticationScheme) { switch (authenticationScheme) { case Constants.AuthenticationScheme.BEARER: case Constants.AuthenticationScheme.POP: logger.trace("18tev1", correlationId); return true; default: logger.trace("1dd2nh", correlationId); return false; } } return true; } export { getPlatformAuthProvider, isPlatformAuthAllowed, isPlatformBrokerAvailable }; //# sourceMappingURL=PlatformAuthProvider.mjs.map