@azure/msal-browser
Version:
Microsoft Authentication Library for js
97 lines (94 loc) • 4.37 kB
JavaScript
/*! @azure/msal-browser v5.11.0 2026-05-19 */
;
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